如何解决Matplotlib — 如何将堆积的条形图放入子图中
我试图在 matplotlib 的同一个图中绘制两个堆叠的条形图。下面的代码并不是绝对最小的,因为即使我将同一个图调用到两个不同的子图中,我也会遇到相同的错误,但是由于没有理由将同一个图绘制两次,因此我将 {{1} } 列使情况更平易近人。
groups
当我在 jupyter notebooks 中运行这个时,我得到两个空的子图(一个在另一个下面,所以不在同一个图中),然后两个图中的第二个出现在下面。
无论我将 df = pd.DataFrame({
'groups': ['A','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()
设置为 stacked=
还是 True
,都会发生这种情况,所以我猜这与我找不到的 False
有关在文档中。当我用 .plot.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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。