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

如何用Python创建示例中的比例面积饼图类信息图?

Python实现嵌套比例面积图(对应目标图表类型)

图表类型确认

你提到的"proportional area chart pie"实际是嵌套比例面积图,属于层级数据可视化的一种,通过嵌套区块的大小展示不同层级数据的占比与从属关系,无需Tableau即可用Python实现。

实现方案

方案1:Matplotlib绘制静态嵌套比例图

通过多层同心圆饼图模拟效果,适合快速生成静态图:

import matplotlib.pyplot as plt
import numpy as np

# 层级占比数据:外层大类、中层子类、内层细分项
outer_sizes = [40, 30, 30]
middle_sizes = [15, 25, 10, 20, 15, 15]
inner_sizes = [5,10,12,13,4,6,8,12,7,8,5,10]

# 自定义配色
outer_colors = ['#ff9999','#66b3ff','#99ff99']
middle_colors = ['#ffcccc','#ff6666','#99ccff','#3399ff','#ccffcc','#33cc33']
inner_colors = plt.cm.tab20(np.linspace(0,1,len(inner_sizes)))

# 创建画布并绘制多层饼图
fig, ax = plt.subplots(figsize=(8,8))
ax.pie(outer_sizes, radius=1, colors=outer_colors, wedgeprops=dict(width=0.3, edgecolor='white'))
ax.pie(middle_sizes, radius=0.7, colors=middle_colors, wedgeprops=dict(width=0.2, edgecolor='white'))
ax.pie(inner_sizes, radius=0.5, colors=inner_colors, wedgeprops=dict(width=0.2, edgecolor='white'))

# 保持正圆形并展示
ax.set_aspect('equal')
plt.title('嵌套比例面积图')
plt.show()

方案2:Plotly绘制交互式嵌套比例图(旭日图)

支持hover显示详情,适合需要交互的场景:

import plotly.express as px

# 层级结构化数据:包含节点ID、标签、父节点、数值
data = dict(
    ids = ['大类A', '大类B', '大类C',
           '大类A-子1', '大类A-子2', '大类B-子1', '大类B-子2', '大类C-子1', '大类C-子2',
           'A子1-项1', 'A子1-项2', 'A子2-项1', 'A子2-项2', 'B子1-项1', 'B子1-项2', 'B子2-项1', 'B子2-项2', 'C子1-项1', 'C子1-项2', 'C子2-项1', 'C子2-项2'],
    labels = ['大类A', '大类B', '大类C',
              '子项1', '子项2', '子项1', '子项2', '子项1', '子项2',
              '细分1', '细分2', '细分1', '细分2', '细分1', '细分2', '细分1', '细分2', '细分1', '细分2', '细分1', '细分2'],
    parents = ['', '', '',
               '大类A', '大类A', '大类B', '大类B', '大类C', '大类C',
               '大类A-子1', '大类A-子1', '大类A-子2', '大类A-子2', '大类B-子1', '大类B-子1', '大类B-子2', '大类B-子2', '大类C-子1', '大类C-子1', '大类C-子2', '大类C-子2'],
    values = [40, 30, 30,
              15,25,10,20,15,15,
              5,10,12,13,4,6,8,12,7,8,5,10]
)

# 生成旭日图
fig = px.sunburst(
    data,
    ids='ids',
    labels='labels',
    parents='parents',
    values='values',
    title='交互式嵌套比例面积图'
)
fig.show()

注意事项

  • 需按层级关系整理数据,确保子项与父类对应正确
  • 自定义配色时避免相近颜色,提升可读性
  • Plotly会自动计算占比,无需手动调整各层级数值总和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:52:52