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

如何调整Matplotlib Sankey图分支位置?Group2中Info2/Info3需左移

调整桑基图分支位置的解决方案

要让Group2中的Info2和Info3分支更靠左,你需要针对**第二个桑基图实例(Group2)**单独设置参数,而非修改全局Sankey初始化参数。以下是具体修改方案:

方法1:缩短Group2的主树干长度

在Group2的sankey.add()中添加trunklength参数,减小该值会缩短主树干,让分支自然左移:

# group2
sankey.add(
    flows = [1000,-768,-200,-32,-2,],
    orientations = [0,0,-1,1,-1],
    labels= [None, None,'INfo 2','INfo 1','INfo 3'],
    trunklength=0.3  # 缩短主树干长度,分支起始位置左移
)

方法2:精准控制目标分支的路径长度

如果需要单独调整Info2和Info3的位置,可以用pathlengths参数为每个流指定路径长度,给目标分支设置更小的值:

# group2
sankey.add(
    flows = [1000,-768,-200,-32,-2,],
    orientations = [0,0,-1,1,-1],
    labels= [None, None,'INfo 2','INfo 1','INfo 3'],
    pathlengths=[0.4, 0.4, 0.1, 0.4, 0.1]  # 索引2(Info2)和4(Info3)设为更小值
)

修改后的完整代码

import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey

fig = plt.figure(figsize=(13, 7), frameon=False)
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[])
sankey = Sankey(ax=ax, 
                format='%.6G', 
                unit='kWh', 
                scale=1/1500,
                offset=0.2,
                shoulder=0.0)

# first group 
sankey.add(
    flows=[1000],
    orientations=[0], 
    labels=['GHI'],
    pathlengths=[0.4]
)

# group2
sankey.add(
    flows=[1000,-768,-200,-32,-2,],
    orientations=[0,0,-1,1,-1],
    labels=[None, None,'INfo 2','INfo 1','INfo 3'],
    trunklength=0.3  # 关键修改:缩短主树干
)

# Group 3
sankey.add(
    flows=[768, -698, -70],
    orientations=[0, 0, -1],
    labels=[None, 'ECS consommée','Pertes thermique des ballons'],
    prior=1,
    connect=(1, 0)
)

sankey.finish()
plt.show()

参数说明

  • trunklength:控制当前桑基图主树干的水平长度,值越小,主树干越短,分支起始位置越靠左。
  • pathlengths:列表元素与flows一一对应,调整特定流的参数可单独控制该分支的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 21:00:27