Plotly Treemap绑定color与values同列时父节点颜色不一致如何解决
问题原因
Plotly Express 生成 treemap 时默认对父节点颜色采用平均值聚合规则,和你期望的子节点数值总和映射效果不一致,内部自动计算的<column_name>_sum默认仅用于面积计算和悬停提示,没有直接绑定到颜色参数。
解决方案
方案1:使用内置参数(推荐,适配Plotly 4.10及以上版本)
官方已在较高版本中新增color_aggregation参数,直接指定聚合规则为总和即可,修改后代码如下:
fig = px.treemap(df, path=sti, values='Size in kB', color='Size in kB', branchvalues='total', color_aggregation='sum') fig.show()
无需额外处理即可实现父节点颜色按子节点数值总和映射的效果。
方案2:手动修改图表属性(兼容低版本Plotly)
如果使用的版本不支持上述参数,可以生成图表对象后手动替换颜色映射的数值源:
# 先生成原始图表 fig = px.treemap(df, path=sti, values='Size in kB', color='Size in kB', branchvalues='total') # 将颜色映射值替换为Plotly自动计算的总和值(存储在customdata最后一列) fig.data[0].marker.colors = fig.data[0].customdata[:, -1] # 可选:修改颜色条标题更符合语义 fig.update_layout(coloraxis_colorbar_title="总Size in kB") fig.show()
内容的提问来源于stack exchange,提问作者C.Donau
相关产品推荐
相关产品推荐

