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

Plotly Sunburst图表未形成完整圆环问题解决请求

解决Plotly Sunburst图表父节点空白扇区问题

问题根源

Sunburst图表出现父节点空白扇区,核心原因是默认branchvalues="remainder"参数的行为:父节点的扇区大小为设置的values减去所有子节点数值的总和,差值部分就会显示为空白。如果父节点的values未设置为子节点数值的总和,就会出现这种情况。

解决方案

通过两个关键调整彻底消除空白:

  1. 设置branchvalues="total":让父节点的扇区大小自动等于所有子节点数值的总和,无需手动计算父节点的values。
  2. 确保数据层级映射正确:父节点的parents字段正确关联到上层节点,子节点的数值完整覆盖父节点的空间。

修正代码示例

以下是针对你的层级结构(根节点Complete score,子节点Ecological/Economical/Social)的修正代码:

import plotly.graph_objects as go
import pandas as pd

# 修正后的层级数据:父节点无需手动设置values,由子节点总和自动计算
data = [
    {"labels": "Complete score", "parents": "", "values": 0},
    {"labels": "Ecological", "parents": "Complete score", "values": 0},
    {"labels": "Eco-Factor 1", "parents": "Ecological", "values": 15},
    {"labels": "Eco-Factor 2", "parents": "Ecological", "values": 25},
    {"labels": "Economical", "parents": "Complete score", "values": 0},
    {"labels": "Econ-Factor 1", "parents": "Economical", "values": 20},
    {"labels": "Econ-Factor 2", "parents": "Economical", "values": 10},
    {"labels": "Social", "parents": "Complete score", "values": 0},
    {"labels": "Soc-Factor 1", "parents": "Social", "values": 30},
]
df = pd.DataFrame(data)

# 生成Sunburst图表,关键设置branchvalues="total"
fig = go.Figure(go.Sunburst(
    labels=df['labels'],
    parents=df['parents'],
    values=df['values'],
    branchvalues="total",  # 消除空白的核心参数
    # 保留原有样式的可选设置(按需调整)
    marker=dict(line=dict(width=2, color='white')),
    textfont=dict(size=12)
))

# 去除图表边距,让布局更紧凑
fig.update_layout(margin=dict(t=0, l=0, r=0, b=0))
fig.show()

额外说明

  • 如果需要手动控制父节点的values,只需确保父节点的数值等于其所有子节点数值的总和,同时设置branchvalues="total"即可。
  • 若你的原始DataFrame中父节点已有values,只需将branchvalues改为"total",无需修改原有数值,Plotly会自动用子节点总和覆盖父节点的设置值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:21:14