Download notebook (.ipynb)

Guide to Ordering#

import numpy as np
import pandas as pd

from lets_plot import *
LetsPlot.setup_html()
mpg = pd.read_csv ("https://raw.githubusercontent.com/JetBrains/lets-plot-docs/master/data/mpg.csv")
p = ggplot(mpg) + theme(axis_title_x='blank')
p1 = p + ggtitle("default") + geom_boxplot( aes('class','hwy'))

p2 = (p + ggtitle("alphabetically") 
            + geom_boxplot(aes(as_discrete('class',order=1), 'hwy')))
p3 = (p + ggtitle("middle ↑") \
                   + geom_boxplot(aes(as_discrete('class',order=1, order_by='..middle..'), 'hwy')))
p4 = (p + ggtitle("middle ↓") \
                   + geom_boxplot(aes(as_discrete('class',order=-1, order_by='..middle..'), 'hwy')))
p5 = (p + ggtitle("ymax ↑") \
                   + geom_boxplot(aes(as_discrete('class',order=1, order_by='..ymax..'), 'hwy')))
p6 = (p + ggtitle("ymax ↓") \
                   + geom_boxplot(aes(as_discrete('class',order=-1, order_by='..ymax..'), 'hwy')))
p7 = (p + ggtitle("ymin ↑") \
                   + geom_boxplot(aes(as_discrete('class',order=1, order_by='..ymin..'), 'hwy')))
p8 = (p + ggtitle("ymin ↓") \
                   + geom_boxplot(aes(as_discrete('class',order=-1, order_by='..ymin..'), 'hwy')))

gggrid([p1, p2, p3, p4, p5, p6, p7, p8], ncol=2) + ggsize(940, 1200)
ordered_class = as_discrete('class', order=1)

p1 = (p + ggtitle("x='class',\ncolor='class'") 
            + geom_boxplot(aes('class', 'hwy', color='class'))
     )

p3 = (p + ggtitle("x=as_discrete('class', order=1),\ncolor='class'") 
            + geom_boxplot(aes(ordered_class, 'hwy', color='class'))
     )

p4 = (p + ggtitle("x=as_discrete('class', order=1),\ncolor=as_discrete('class')") 
            + geom_boxplot(aes(ordered_class, 'hwy', color=as_discrete('class')))
     )

p5 = p + ggtitle("x='class',\ncolor='drv'") + geom_boxplot(aes('class','hwy', color='drv'))

p7 = (p + ggtitle("x=as_discrete('class', order=1),\ncolor=as_discrete('drv', order=1)") 
            + geom_boxplot(aes(
                as_discrete('class', order=1), 'hwy',  
                color=as_discrete('drv', order=1)))
     )

p8 = (p + ggtitle("x=as_discrete('class', order_by='..middle..')") 
            + geom_boxplot(aes(
                as_discrete('class', order_by='..middle..', order=1), 'hwy', color='drv'))
     )

ggbunch(
    [p1, p3, p4, p5, p7, p8],
    [(0, 0, .5, .25),
     (0, .25, .5, .25),
     (.5, .25, .5, .25),
     (0, .5, .5, .25),
     (0, .75, .5, .25),
     (.5, .75, .5, .25)]
) + ggsize(940, 1200)
p1 = (ggplot(mpg, aes('class', 'hwy')) + 
         geom_crossbar(aes(color='class'), stat='boxplot') +  
         scale_color_brewer(type='qual', palette='Dark2') + 
         ggtitle('default'))

p2 = (ggplot(mpg, aes(x=as_discrete('class', order_by="..middle..", order=1), y = 'hwy')) + 
         geom_crossbar(aes(color='class'), stat='boxplot') + 
         scale_color_brewer(type='qual', palette='Dark2') +
         ggtitle('middle ↑,\norder option also applies to \'color\'') )

p3 = (ggplot(mpg, aes(x=as_discrete('class', order_by="..middle.."), y = 'hwy')) + 
         geom_crossbar(aes(color=as_discrete('class', order=1)), stat='boxplot') +
         scale_color_brewer(type='qual', palette='Dark2') + 
         ggtitle('\'class\' with \'order_by\' + \'class\' with \'order\':\noptions are combined') )

gggrid([p1, p2, p3], ncol=2) + ggsize(940, 600)
p1 = (p + ggtitle("default") + geom_bar(aes('class', 'hwy')))

p2 = (p + ggtitle("alphabetically") 
               + geom_bar(aes(as_discrete('class', order=1), 'hwy')))


p3 = (p + ggtitle("y ↓") 
               + geom_bar(aes(as_discrete('class', order_by='hwy'), 'hwy')))
p4 = (p + ggtitle("y ↑") 
               + geom_bar(aes(as_discrete('class', order_by='hwy', order=1), 'hwy')))

gggrid([p1, p2, p3, p4], ncol=2) + ggsize(940, 600)
# geom_bar

p1 = (p + ggtitle("default") + geom_bar(aes('manufacturer', fill='class')))

p2 = (p + ggtitle("x alphabetically") 
               + geom_bar(aes(as_discrete('manufacturer', order=1), fill='class')))

p3 = (p + ggtitle("x alphabetically + sampling_pick(4)") 
               + geom_bar(aes(as_discrete('manufacturer', order=1), fill='class'), 
                         sampling=sampling_pick(4)))

p4 = (p + ggtitle("fill alphabetically") 
               + geom_bar(aes('manufacturer', fill=as_discrete('class',order=1))))

p5 = (p + ggtitle("x and fill alphabetically") 
               + geom_bar(aes(as_discrete('manufacturer', order=1), fill=as_discrete('class',order=1))))

p6 = (p + ggtitle("x by count (sum is taken)") 
               + geom_bar(aes(as_discrete('manufacturer',order_by='..count..'), fill='class')))

p7 = (p + ggtitle("x by count + sampling_pick(4)") 
               + geom_bar(aes(as_discrete('manufacturer',order_by='..count..'), fill='class'),
                             sampling=sampling_pick(4)))

ggbunch(
    [p1, p2, p3, p4, p5, p6, p7],
    [(0, 0, .5, .25),
     (0, .25, .5, .25),
     (.5, .25, .5, .25),
     (0, .5, .5, .25),
     (.5, .5, .5, .25),
     (0, .75, .5, .25),
     (.5, .75, .5, .25)]
) + ggsize(940, 1200)
pp = ggplot(mpg, aes(x='fl', fill='drv'))
p1 = pp + geom_bar() + ggtitle('Default')
p2 = pp + geom_bar(position='dodge') + ggtitle("With Dodge Position")

p_order1 = ggplot(mpg, aes(x=as_discrete('fl',order=1), fill=as_discrete('drv',order=1)))
title1 = ggtitle('x and fill alphabetically')
p3 = p_order1 + geom_bar() + title1
p4 = p_order1 + geom_bar(position='dodge') + title1

p_order2 = ggplot(mpg, aes(x=as_discrete('fl',order_by="..count.."), fill='drv'))
title2 = ggtitle('x by count')
p5 = p_order2 + geom_bar() + title2
p6 = p_order2 + geom_bar(position='dodge') + title2

gggrid([p1, p2, p3, p4, p5, p6], ncol=2) + ggsize(940, 900)
# diamonds

diamonds = pd.read_csv('https://vincentarelbundock.github.io/Rdatasets/csv/ggplot2/diamonds.csv')
pd = ggplot(diamonds)

p1 = pd + geom_bar(aes('cut', fill = 'clarity')) + ggtitle('Default')
p2 = pd + geom_bar(aes('cut', fill = 'clarity'), position = 'fill') + ggtitle('position=\'fill\'')

p3 = pd + ggtitle('x and fill alphabetically') \
   + geom_bar(aes(as_discrete('cut',order=1), fill = as_discrete('clarity',order=1)), position = 'fill') 
p4 = pd + ggtitle('x by count') \
        + geom_bar(aes(as_discrete('cut',order_by='..count..'), 
                       fill = as_discrete('clarity',order=1)),
                   position = 'fill')

p5 = pd + geom_bar(aes('cut', fill = 'clarity'), position = 'dodge') + ggtitle('position=\'dodge\'')
p6 = pd + ggtitle('x by count and fill alphabetically') \
        + geom_bar(aes(as_discrete('cut',order_by='..count..', order=1),
                      fill = as_discrete('clarity',order=1)),
                   position = 'dodge')

gggrid([p1, p2, p3, p4, p5, p6], ncol=2) + ggsize(940, 900)