多索引 pandas 数据帧上的堆叠条形图

Stacked barplot over multiindex pandas dataframe

import pandas as pd
import numpy as np

np.random.seed(365)
rows = 100
data = {'Month': np.random.choice(['2014-01', '2014-02', '2014-03', '2014-04'], size=rows),
        'Code': np.random.choice(['A', 'B', 'C'], size=rows),
        'ColA': np.random.randint(5, 125, size=rows),
        'ColB': np.random.randint(0, 51, size=rows),}
df = pd.DataFrame(data)

df = df[((~((df.Code=='A')&(df.Month=='2014-04')))&(~((df.Code=='C')&(df.Month=='2014-03'))))]
dfg = df.groupby(['Code', 'Month']).sum()
     

以上。我想绘制一个堆积图..

dfg.unstack(level=0).plot(kind='bar', stacked =True)

我希望堆叠在 'Code' 列上。但是,上面是堆叠 'Month' 为什么?。如何更好地绘制堆叠图?

输入数据帧的索引在plot.bar

中默认用作x-value

IIUC,你需要:

dfg.unstack(level=1).plot(kind='bar', stacked=True)

图例位置:
ax = dfg.unstack(level=1).plot(kind='bar', stacked=True, legend=False)
ax.figure.legend(loc='center left', bbox_to_anchor=(1, 0.5))