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

如何调整Plotly Treemap中的矩形排序与布局?

解决方案

要实现你想要的Treemap布局,需要从调整节点排序逻辑和修改层级结构两方面入手,以下是具体修改方案:

1. 让“O”置于“U”上方

Plotly Treemap在节点数值相同时,会按照labels列表中的顺序排列节点。因此我们可以:

  • 保持“O”在labels中的位置先于“U”
  • 给两者设置相同的values,确保面积一致,从而让O自然排在U上方

2. 让“UR”成为独立列

原来的结构中“UR”是“9”的子节点,和“NA”(“10”的子节点)共享父节点“9”“10”的横向空间。要让UR独立成列,只需将其直接设为“DR”的子节点,与“9”“10”同级,这样它会占据DR下的独立列区域。

修改后的完整代码

import plotly.graph_objects as go

fig = go.Figure(go.Treemap(
    labels = ["DR","1,2","D 1","D 2","O","U",
              "3,4,5","P","B","Pe",
              "6,7,8","F","C","Pl",
              "9","UR",
              "10","NA"],
    parents = ["", "DR", "1,2","1,2","1,2","1,2","DR","3,4,5","3,4,5","3,4,5",
               "DR","6,7,8","6,7,8","6,7,8",
               "DR","DR",  # 修改UR的父节点为DR,使其成为DR的直接子节点
                "DR","10"],
    values = [100, 20, 5,5,5,5,  # 给O和U设置相同数值,保证面积一致
              20,5,5,10,
              20,5,5,10,
              10,10,  # 给9、UR设置相同数值,确保独立列宽度一致
              10,10],
    marker_colors = ["lightgrey", 
                      "lightblue", "cornflowerblue", "cornflowerblue","goldenrod","green",
                      "lightblue","lightgray","chocolate","cadetblue",
                      "lightblue","grey",'chocolate',"saddlebrown",
                      "salmon","salmon",
                      "burlywood","burlywood",
                      ],
    branchvalues="total"
))

fig.update_layout(margin = dict(t=10, l=60, r=25, b=30))
fig.show()

关键修改说明

  • parents列表中,将UR的父节点从"9"改为"DR",使其成为DR的直接子节点,获得独立列空间
  • 添加values参数,给O和U设置相同数值(5),保证两者面积相同,Plotly会按labels顺序排列O在U上方;同时给9、UR、10设置相同数值(10),让这三列宽度一致

内容的提问来源于stack exchange,提问作者Stephanie Galvão

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:25:18