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

如何使用Pandas绘制细分饼图展示自变量与因变量的关系?

实现嵌套饼图(细分饼图)展示定性变量关系

你提到的“细分饼图”标准名称是嵌套饼图(Nested Pie Chart),也可通过旭日图(Sunburst Chart)实现类似分层展示效果。以下是基于你的DataFrame的具体实现方案:

方法一:Matplotlib 绘制嵌套饼图

先对数据做统计聚合,再通过双层饼图实现分层展示:

import pandas as pd
import matplotlib.pyplot as plt

# 构建DataFrame
data = {'Gender': ['m','m','m','f','m','f','m','f','f','f','f','m','m'], 
        'Favorite character':['Jim','Jim','Pam','Jim','Pam','Jim','Jim','Jim','Pam','Pam','Jim','Jim','Pam' ]}
df = pd.DataFrame(data)

# 统计每个性别下的角色偏好数量
gender_char_counts = df.groupby(['Gender', 'Favorite character']).size().unstack()
# 统计每个性别的总人数
gender_total = df['Gender'].value_counts()

# 外层饼图(性别占比)
outer_sizes = gender_total.values
outer_labels = ['男性', '女性']  # 替换为中文标签更直观

# 内层饼图(各性别下的角色偏好占比)
inner_sizes = gender_char_counts.values.flatten()
inner_labels = [f'男性\n吉姆', '男性\n帕姆', '女性\n吉姆', '女性\n帕姆']  # 对应分组的中文标签

# 绘制嵌套饼图
fig, ax = plt.subplots(figsize=(6,6))
# 外层饼图,设置宽度形成环形
ax.pie(outer_sizes, labels=outer_labels, radius=1, 
       wedgeprops=dict(width=0.3, edgecolor='white'))
# 内层饼图,半径更小,嵌入环形内
ax.pie(inner_sizes, labels=inner_labels, radius=0.7, 
       wedgeprops=dict(width=0.3, edgecolor='white'))

# 保证饼图为正圆形
ax.set_aspect('equal')
plt.title('性别与偏好角色分布')
plt.show()

方法二:Plotly 绘制旭日图(更直观的分层展示)

旭日图是嵌套饼图的进阶形式,能更清晰展示层级关系:

import pandas as pd
import plotly.express as px

# 构建DataFrame
data = {'Gender': ['m','m','m','f','m','f','m','f','f','f','f','m','m'], 
        'Favorite character':['Jim','Jim','Pam','Jim','Pam','Jim','Jim','Jim','Pam','Pam','Jim','Jim','Pam' ]}
df = pd.DataFrame(data)

# 转换为适合旭日图的长格式数据
df_agg = df.groupby(['Gender', 'Favorite character']).size().reset_index(name='人数')
# 替换英文标签为中文
df_agg['Gender'] = df_agg['Gender'].replace({'m':'男性', 'f':'女性'})
df_agg['Favorite character'] = df_agg['Favorite character'].replace({'Jim':'吉姆', 'Pam':'帕姆'})

# 绘制旭日图
fig = px.sunburst(df_agg, path=['Gender', 'Favorite character'], values='人数',
                  title='性别与偏好角色分层分布')
fig.show()

查阅资料方向

  • Matplotlib 官方文档:搜索「Nested Pie Charts」,可找到官方示例代码与参数说明
  • Plotly 官方文档:搜索「Sunburst Charts」,有详细的分层可视化教程
  • Pandas 可视化文档:结合 Pandas 的groupby、value_counts等聚合方法,搭配Matplotlib/Plotly实现统计可视化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:13:11