如何将Matplotlib生成的两个柱状图分配到subplots子图的两列中展示
Matplotlib 子图布局调整方案
问题原因
你现有代码无法将两个柱状图拆分到两个子图的原因有两点:
- 重复创建画布:首次调用
plt.figure()生成的画布未被使用,后续plt.subplots()生成的新画布会覆盖之前的尺寸、布局设置 - 未指定绘图子图:pandas的
plot方法默认在当前激活的最后一个子图上绘图,未手动指定子图位置时两个图会叠加显示
调整后代码
# Bar Plot for Firm Performance # 直接在创建子图时指定画布参数,避免重复创建 fig, axs = plt.subplots(1, 2, figsize = (6, 4)) fig.suptitle("Firm performance", fontsize=14) fig.subplots_adjust(top=0.85, wspace=0.3) # 分别指定两个柱状图的绘制子图 dfSPSSactive['Q7_12_1'].value_counts().sort_index().plot(kind='bar', ax=axs[0]) dfSPSSactive['Q7_12_2'].value_counts().sort_index().plot(kind='bar', color='red', ax=axs[1]) # 可选设置:为子图添加单独标题 axs[0].set_title('Q7_12_1 分布') axs[1].set_title('Q7_12_2 分布') plt.show()
核心修改说明
调用pandas绘图接口时传入ax参数绑定对应子图即可,1行2列布局返回的axs是长度为2的数组,索引0对应左列子图,索引1对应右列子图。
内容的提问来源于stack exchange,提问作者fredooms
相关产品推荐
相关产品推荐

