使用具有两列以上的 df 的子图中的堆积条
Stacked-bar in sub-plot using df with more than two columns
我的 df
包含三列每月数据。 Here 是文件。
我想使用堆叠条在子图中将每个月的所有三列绘制在彼此之上。
这是我尝试过的众多代码之一:
df.plot(kind='bar', stacked=True, bottom = df['Yf'])
它创建了一个条形奇怪地悬挂的图(见下图)。
我想把它放在一个子图中,所有的列都堆在一起。因此,每个月的最高点是相应月份三个参数的总和。我也想自由安排哪个参数应该放在底部、中间和顶部。
我想要这样的东西。
上网查了,还没解决。
删除 bottom=df['Yf']
,因为这会告诉 plt
将条形图放置在 df['Yf']
的高度。所以只是:
df.plot(kind='bar', stacked=True)
你可以选择顺序(bottom, middle, top)
,像这样:
orders = ['Yf', 'Ls', 'Lc']
df[orders].plot(kind='bar', stacked=True)
会将 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
解决方案。
我的 df
包含三列每月数据。 Here 是文件。
我想使用堆叠条在子图中将每个月的所有三列绘制在彼此之上。
这是我尝试过的众多代码之一:
df.plot(kind='bar', stacked=True, bottom = df['Yf'])
它创建了一个条形奇怪地悬挂的图(见下图)。
我想把它放在一个子图中,所有的列都堆在一起。因此,每个月的最高点是相应月份三个参数的总和。我也想自由安排哪个参数应该放在底部、中间和顶部。
我想要这样的东西。
删除 bottom=df['Yf']
,因为这会告诉 plt
将条形图放置在 df['Yf']
的高度。所以只是:
df.plot(kind='bar', stacked=True)
你可以选择顺序(bottom, middle, top)
,像这样:
orders = ['Yf', 'Ls', 'Lc']
df[orders].plot(kind='bar', stacked=True)
会将 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
解决方案。