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

如何隐藏Plotly桑基图指定节点并保留中间节点的数值对应大小?

解决方案

核心思路为手动固定节点坐标+隐藏冗余元素+调整边距,中间节点的尺寸计算逻辑完全不变,不会产生循环链路,也不会出现多余留白,性能影响可忽略。

实现代码如下

import plotly.graph_objects as go

link_data = dict(
    source = [0,1,1],
    target = [1,2,2],
    value = [1,1,1],
    # 指向待隐藏节点的链路设为完全透明
    color = ["#1f77b4", "rgba(0,0,0,0)", "rgba(0,0,0,0)"]
)

node_data = dict(
    label = ["a", "b", ""],  # 待隐藏节点label置空
    # 手动指定节点水平位置:a在最左,b在中间,待隐藏节点c和b重叠
    x = [0, 0.5, 0.5],
    y = [0.5, 0.5, 0],
    # 待隐藏节点颜色设为完全透明
    color = ["#1f77b4", "#ff7f0e", "rgba(0,0,0,0)"]
)

fig = go.Figure(
    data = [go.Sankey(
        node = node_data,
        link = link_data,
        arrangement = "fixed"  # 固定节点位置,禁止Plotly自动重排
    )]
)
# 缩小右侧边距消除多余留白
fig.update_layout(margin = dict(r = 20))
fig.show()

方案优势

  • 中间节点b的高度完全由原始的总流入、流出值计算得到,符合需求
  • 无循环链路等逻辑错误
  • 待隐藏节点和对应链路完全不可见,也不会在右侧占用空间,无多余留白
  • 仅修改样式和坐标参数,无额外冗余渲染逻辑,性能影响可以忽略

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:09:02