You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:35:26