我的df包含三列月度数据。 Here是档案。 我想使用堆叠条在子图中将每个月的所有三列相互叠加在一起。这是我尝试过的众多代码之一:
df
df.plot(kind='bar', stacked=True, bottom = df['Yf'])
它创建了一个单独的情节,条形图奇怪地挂起(见下图)。
我想把它放在一个子图中,所有列都堆叠在一起。因此,每个月的最高点是相应月份中三个参数的总和。我还希望能够自由地安排哪个参数应该放在底部,中间和顶部。 我想要这样的东西。 在互联网上搜索,还没有解决方案。
删除bottom=df['Yf'],因为这告诉plt将酒吧放在df['Yf']的高度。所以就:
bottom=df['Yf']
plt
df['Yf']
df.plot(kind='bar', stacked=True)
您可以选择(bottom, middle, top)订单,如下所示:
(bottom, middle, top)
orders = ['Yf', 'Ls', 'Lc'] df[orders].plot(kind='bar', stacked=True)
将Yf放在底部,然后是Ls,Lc排在最前面。输出:
Yf
Ls
Lc
这种解决方法提供了我需要的东西。
ax1.bar(df.index, df['Yf'], alpha=0.7, color='green') ax1.bar(df.index, df['Lc'], bottom=df['Yf'], alpha=0.7, color='red') ax1.bar(df.index, df['Ls'], bottom=df['Yf']+df['Lc'], alpha=0.7, color='c')
以为有单行ax1.bar解决方案。
ax1.bar