我正在尝试使用 matplotlib 代表一个国家的气体平衡。
这个想法是,我想使用一个 Sankey 绘制三个进口天然气来源,并将其连接到另一个具有其他天然气来源(生产、天然气储存)和天然气消费者作为流出的 Sankey。
我尝试了很多次,但我无法将两个图表连接在一起。
每个图表都按设计单独绘制。但是,一旦我添加"prior=0, connect=(3,0)"
了应该将两个图表连接在一起的内容,一切都会出错,给我带来我无法完全理解的错误。这是代码。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
ImportLabels=["Imports by\nNaftogaz","Imports by\nOstchem","Imports from\nEurope", ""]
ImportFlows=[11.493,9.768,1.935,-23.196]
ImportOrientation=[0,1,-1,0]
l=["Imports","Private\nextraction","State\nextraction","Net supplies\ntoUGS","Households","TKE","Metallurgy","Energy","Other\nIndustries","Technological\nlosses"]
v=[23.196,3.968,13.998,-2.252,-13.289,-7.163,-3.487,-4.72,-7.037,-3.17]
d=[0,-1,1,-1,0,0,1,1,1,-1]
sankey=Sankey(scale=1.0/69,patchlabel="Gas balance",format='%.1f',margin=0.15)
sankey.add(flows=ImportFlows, labels=ImportLabels, orientations=ImportOrientation, label='Imports',fc='#00AF00')
sankey.add(flows=v,labels=l,orientations=d, prior=0, connect=(3,0),label='Second',fc='#008000')
这个想法是将第一个图的 3 个流出量(具有 -23.196 值)与第二个 sankey 的 0 个流入量(也具有 23.196)连接起来
这是错误文本:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-24-1220fede42ce> in <module>()
14 sankey=Sankey(scale=1.0/69,patchlabel="Gas balance",format='%.1f',margin=0.15)
15 sankey.add(flows=ImportFlows, labels=ImportLabels, orientations=ImportOrientation, label='Imports',fc='#00AF00')
---> 16 sankey.add(flows=v,labels=l,orientations=d, prior=0, connect=(3,0),label='Second',fc='#008000')
C:\Python27\lib\site-packages\matplotlib\sankey.pyc in add(self, patchlabel, flows, orientations, labels, trunklength, pathlengths, prior, connect, rotation, **kwargs)
369 ("The connection index to the source diagram is %d, but "
370 "that diagram has only %d flows.\nThe index is zero-based."
--> 371 % connect[0], len(self.diagrams[prior].flows))
372 assert connect[1] < n, ("The connection index to this diagram is "
373 "%d, but this diagram has only %d flows.\n"
TypeError: not enough arguments for format string
所以我不确定两个图之间的连接是否有问题(由 sankey.pyc 试图显示的文本建议)还是 matplotlib 本身有问题"TypeError: not enough arguments for format string"
?