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

如何为pandas列各分组绘制子图:泰坦尼克号各舱位存活占比饼图实现

实现方案

你之前的写法是把所有舱位的存活/未存活数据放在同一个饼图中展示,自然不符合分舱位输出3个独立饼图的需求,可直接使用以下代码实现需求:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 加载泰坦尼克号数据集
df_titanic = sns.load_dataset('titanic')

# 初始化1行3列的子图画布,可自行调整尺寸
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(15, 5))
# 舱位对应展示名称映射
pclass_name = {1: '1等舱', 2: '2等舱', 3: '3等舱'}
# 饼图标签对应survived字段0/1的含义
pie_labels = ['未存活', '存活']

# 遍历每个舱位绘制对应饼图
for index, pclass in enumerate([1, 2, 3]):
    # 筛选当前舱位的存活统计值,按索引排序保证标签对应正确
    surv_data = df_titanic[df_titanic['pclass'] == pclass]['survived'].value_counts().sort_index()
    # 绘制饼图,显示百分比
    axes[index].pie(surv_data, labels=pie_labels, autopct='%.2f%%', startangle=90)
    # 子图添加标题
    axes[index].set_title(f'{pclass_name[pclass]}乘客存活占比')
    # 强制饼图为正圆形
    axes[index].axis('equal')

# 自动调整子图间距
plt.tight_layout()
plt.show()

补充说明:

  • 每个饼图的百分比基数为对应舱位的总乘客数,符合分舱位统计占比的要求
  • 如果需要单独导出每个饼图,可在循环内添加plt.savefig(f'{pclass}等舱存活占比.png')语句单独保存

内容的提问来源于stack exchange,提问作者mert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:45:03