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

Plotly旭日图添加与父类数值成比例的平行子节点方法咨询

Plotly 旭日图单父类多子节点实现方案

实现思路

原始数据为宽格式,people_vaccinated、people_fully_vaccinated两个接种指标以列维度存储,无法直接作为国家层级的子节点。将宽表转为长格式后,构造「大洲→国家→接种指标」三级层级路径即可实现需求,无需手动配置names、parents参数。

完整实现代码

import pandas as pd
import plotly.express as px

# 原始数据集
df = pd.DataFrame({'continent':['SA','SA','NA','NA'],
                  'country':['Brazil','Uruguay','USA','Canada'],
                  'total_vaccinations':[100,80,400,200],
                  'people_vaccinated':[40,20,100,80],
                  'people_fully_vaccinated':[8,4,11,11]})

# 宽表转长表,将两个接种指标转为行数据
df_long = df.melt(
    id_vars=['continent', 'country', 'total_vaccinations'],
    value_vars=['people_vaccinated', 'people_fully_vaccinated'],
    var_name='vaccine_type',
    value_name='count'
)

# 数值校准(可选):使国家层级尺寸严格对应total_vaccinations数值
df_long['count'] = df_long['count'] * df_long['total_vaccinations'] / df_long.groupby('country')['count'].transform('sum')

# 绘制三级旭日图
fig = px.sunburst(
    df_long,
    path=['continent', 'country', 'vaccine_type'],
    values='count',
    hover_data={'total_vaccinations': True}
)

# 自定义标签显示效果
fig.update_traces(textinfo='label+percent parent')
fig.show()

效果说明

  • 最外层节点为两个接种指标,尺寸和自身数值成正比
  • 国家层级尺寸默认是其下所有子节点的数值之和,增加校准步骤后可严格匹配total_vaccinations的基准值
  • 可通过hover_data自定义悬停时显示的字段,方便查看各级指标的具体数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 08:06:07