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

