How do I create a bar chart in python ggplot?

14,501

Use weight, here is an example:

from ggplot import *
import pandas as pd
df = pd.DataFrame({"x":[1,2,3,4], "y":[1,3,4,2]})
ggplot(aes(x="x", weight="y"), df) + geom_bar()

the output looks like:

enter image description here

Share:
14,501
Clay
Author by

Clay

Updated on July 12, 2022

Comments

  • Clay
    Clay almost 2 years

    I'm using yhat's ggplot library. I have the following pandas DataFrame:

       degree  observed  percent observed  expected  percent expected
    0       0         0               0.0         0          0.044551
    1       1         1               0.1         1          0.138604
    2       2         3               0.3         2          0.215607
    3       3         4               0.4         2          0.223592
    4       4         1               0.1         2          0.173905
    5       5         1               0.1         1          0.108208
    

    At the moment, I'm doing the following (where df returned in the first line in the first line in the function is the DataFrame above):

    def chartObservedExpected(graph):
        df = observedExpected(graph)
        return ggplot(aes(x='degree', y='percent observed'), data=df) + \
               geom_point() + \
               ylim(-0.015,1.015) + \
               xlim(-0.05,max(df['degree']) + 0.25) + \
               labs("Degree","Proportion of Total") + \
               ggtitle("Observed Node Degree Distribution")
    
    chartObservedExpected(G)
    

    This is what I get:

    scatter

    However, whenever I try geom_bar() instead of geom_point(), I end up with just 100% bars. I've tried just plain geom_bar() and also geom_bar(stat="percent observed"), but neither seem to work. This is always what I get:

    bar

    What I'm trying to do is to mimic/reproduce the following:

    attempt

    Any idea how to get the bar part working (or the whole thing, for that matter)?

  • Clay
    Clay about 10 years
    Thanks! Looks like this is a little funky if you try to use xlim to set the range of the x-axis, but it seems to work well otherwise. I also was unable to change the width of the bars.
  • Jaycal
    Jaycal over 7 years
    Spent so much time trying to do this with stat='identity' and it didn't work. This does.