7

I'm trying to create a stacked bar chart in pandas using time series data:

        DATE        TYPE    VOL
    0   2010-01-01  Heavy   932.612903
    1   2010-01-01  Light   370.612903
    2   2010-01-01  Medium  569.451613
    3   2010-02-01  Heavy   1068.250000
    4   2010-02-01  Light   341.535714
    5   2010-02-01  Medium  484.250000
    6   2010-03-01  Heavy   1090.903226
    7   2010-03-01  Light   314.419355

X = date, Y = vol, stacks = type

any help greatly appreciated, thankyou.

Analyst
  • 139
  • 2
  • 9

1 Answers1

10

Let's use pandas plot:

df = df.set_index('DATE')
#moved the 'DATE' column into the index

df.index = pd.to_datetime(df.index)
#convert the string 'DATE' column to a datetime dtype

df.set_index('TYPE',append=True)['VOL'].unstack().plot.bar(stacked=True,figsize=(10,8))
#Moved 'TYPE' into the index with 'DATE' then unstacked 'TYPE' to create a dataframe that has 'DATE' as row labels and 'TYPE' as column labels.  And, then used pandas dataframe plot to chart that frame as a vertical bar chart with stacked=True.

enter image description here

Scott Boston
  • 147,308
  • 15
  • 139
  • 187