Plotly Sunburst图表未形成完整圆环问题解决请求
解决Plotly Sunburst图表父节点空白扇区问题
问题根源
Sunburst图表出现父节点空白扇区,核心原因是默认branchvalues="remainder"参数的行为:父节点的扇区大小为设置的values减去所有子节点数值的总和,差值部分就会显示为空白。如果父节点的values未设置为子节点数值的总和,就会出现这种情况。
解决方案
通过两个关键调整彻底消除空白:
- 设置
branchvalues="total":让父节点的扇区大小自动等于所有子节点数值的总和,无需手动计算父节点的values。 - 确保数据层级映射正确:父节点的
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
相关产品推荐
相关产品推荐

