如何隐藏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
相关产品推荐
相关产品推荐

