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

如何使用Plotly的sunburst旭日图展示各分支均值而非总和适配比率数据

Plotly旭日图展示分组均值的实现方法

Plotly旭日图默认对传入的数值列做求和聚合,要展示各层级平均值可通过以下两种方案实现:

方案1:预聚合数据后绘图(全版本兼容)

  • 操作逻辑:按照旭日图的层级顺序逐层分组计算平均值,再将所有层级的聚合结果拼接为适配sunburst输入的数据集后绘图
  • 示例代码:
import pandas as pd
import plotly.express as px

# 示例原始数据:包含层级列level1、level2,比率值列rate
df = pd.read_csv("你的数据文件路径")

# 逐层计算各层级节点的均值
# 一级分组聚合
level1_agg = df.groupby("level1")["rate"].mean().reset_index()
level1_agg["level2"] = "" # 一级节点无子层级,对应位置填空
# 二级分组聚合
level2_agg = df.groupby(["level1", "level2"])["rate"].mean().reset_index()

# 拼接所有层级数据
sunburst_input = pd.concat([level1_agg, level2_agg], ignore_index=True)

# 绘制旭日图
fig = px.sunburst(
    sunburst_input,
    path=["level1", "level2"], # 替换为你的实际层级列顺序
    values="rate" # 替换为你的比率值列名
)
fig.show()

方案2:直接指定aggfunc参数(Plotly 4.10+版本支持)

  • 操作逻辑:直接传入原始数据,通过aggfunc参数指定聚合逻辑为均值,无需提前处理数据
  • 示例代码:
import plotly.express as px

fig = px.sunburst(
    df, # 原始未聚合的数据
    path=["level1", "level2", "level3"], # 替换为你的实际层级列
    values="rate", # 替换为你的比率值列名
    aggfunc="mean" # 核心参数,指定按平均值聚合
)
fig.show()

注意:使用aggfunc参数时需确保数值列为float/int类型,避免聚合报错。

效果对比

  • 当前默认求和的旭日图结果:
    当前旭日图结果
  • groupby求和验证结果:
    groupby求和验证结果
  • 预期的均值展示旭日图结果:
    期望均值结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:02