我正在尝试在matplotlib的同一图中绘制两个堆叠的条形图。下面的代码并不是绝对最少的,因为即使我将同一图绘制到两个不同的子图中,也会遇到相同的错误,但是由于没有理由两次绘制相同的图,所以我在groups
列中加入了情况平易近人。
df = pd.DataFrame({
'groups': ['A', 'A', 'B', 'A', 'A', 'B', 'B', 'A', 'B', 'B'],
'type_one': [223.3, 17.2, 13.5, 2.4, 9.2, 43.3, 15.2, 23.5, 21.4, 98.2],
'type_two': [419.6, 42.0, 24.6, 33.6, 21.8, 11.5, 12.4, 91.2, 41.3, 16.2]
})
plt.figure(figsize=(12,4))
plt.subplot(121)
df[df.groups=='A'].plot.bar(stacked=True)
plt.subplot(122)
df[df.groups=='B'].plot.bar(stacked=True)
plt.show()
当我在jupyter笔记本中运行此图形时,我得到两个空的子图(一个在另一个图下,因此不在同一图中),然后在下面显示两个图的第二个图。
无论我将其设置stacked=
为True
还是False
,都会发生这种情况,因此我猜测它与.plot.bar()
文档中找不到的某些内容有关。当我尝试相同的东西时plt.bar()
,情节通常会产生。
捕获由创建的轴subplot
并传递到bar
:
ax = plt.subplot(121)
df[df.groups=='A'].plot.bar(stacked=True, ax=ax)
ax = plt.subplot(122)
df[df.groups=='B'].plot.bar(stacked=True, ax=ax)
输出:
注意您可以使用groupby
以下代码简化代码:
fig, axes = plt.subplots(1,2,figsize=(12,4))
for (k,d), ax in zip(df.groupby('groups'), axes.flat):
d.plot.bar(stacked=True, ax=ax)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句