如何在Python中并排绘制两个饼图?现有代码整合遇问题
解决Matplotlib两个饼图并排展示的问题
问题出在你每次都单独创建新的画布和轴,还两次调用plt.show(),导致两个图分开显示。改成下面的代码就能实现并排展示:
import matplotlib.pyplot as plt # 性别分布相关配置 labels_sex = 'Male', 'Female' explode_sex = (0, 0) # 心脏病分布相关配置 labels_target = "Has heart disease", "Doesn't have heart disease" explode_target = (0, 0) # 创建1行2列的子图布局,可通过figsize调整整体图形大小 fig, axs = plt.subplots(1, 2, figsize=(10, 5)) # 绘制第一个子图:性别分布 axs[0].pie(DF.sex.value_counts(), explode=explode_sex, labels=labels_sex, autopct='%1.1f%%', shadow=True, startangle=90) axs[0].axis('equal') # 保证饼图为正圆形 axs[0].set_title('Gender Distribution') # 添加子图标题 # 绘制第二个子图:心脏病分布 axs[1].pie(DF.target.value_counts(), explode=explode_target, labels=labels_target, autopct='%1.1f%%', shadow=True, startangle=90) axs[1].axis('equal') axs[1].set_title('Heart Disease Status') plt.tight_layout() # 自动调整子图间距,避免标签或标题重叠 plt.show()
关键调整点
- 用
plt.subplots(1, 2)一次性生成包含两个子图的画布,axs是对应左右两个子图的轴对象数组 - 分别调用
axs[0]和axs[1]的pie()方法绘制饼图,替代原来重复创建独立画布的方式 - 仅在最后调用一次
plt.show(),确保两个子图在同一个画布中展示 plt.tight_layout()可以自动优化子图间距,避免元素互相遮挡
内容的提问来源于stack exchange,提问作者E_Coops
相关产品推荐
相关产品推荐

