Sankey图matplotlib保存比例问题
Sankey diagram matplotlib save scale issue
使用 matplotlib
从维基百科生成数据的 Sankey 图(看起来非常糟糕的数据,但我想我会找出代码然后去寻找更好的数据)。而且我似乎无法正确缩放文件。
在 macOS 10.12.4 Python.app
系统 plt.show()
中 显示 正常,简单示例保存 fine,但添加 scale = 0.0001
似乎以某种方式破坏了 plt.savefig()
。我试过更改 dpi
参数,但它似乎根本不会影响结果。我还尝试将 scale
参数添加到 savefig
但这似乎根本没有做任何事情(甚至没有破坏它?)。
我可以从 Python.app
保存它,它看起来不错,但我真的很想弄清楚哪里出了问题。
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 = [], title='Global Electricity Production & Consumption 2005'
)
g = [-12192, 6157, 1960, 387, 2383, 1240] # generated
c = [4250, -7942, -1418, -1266, -1017, -8.79] # consumed
sankey = Sankey(ax = ax,
format = '%.5G',
head_angle = 135,
unit = ' TWh',
gap = 0.3,
scale = 0.0001,
margin = 0.0,
offset = 0.2,
shoulder = 0.0)
sankey.add(
patchlabel = 'Production',
flows = g,
orientations = [0, 0, -1, -1, 1, 1],
labels = [None, 'Coal', 'Natural Gas', 'Petroleum', 'Nuclear', 'Renewable'],
pathlengths = [0.0, 0.2, 0.2, 0.6, 0.2, 0.2]
)
sankey.add(
flows = [12192, -4250, -7942],
orientations = [0, 0, -1],
labels = [None, None, 'Conversion Losses'],
pathlengths = [-.2, -.2, 0.4],
# trunklength = 1.0,
prior = 0,
connect = (0, 0)) # denotes which flow index from the prior to connect to which flow index in this one
sankey.add(
patchlabel = 'Gross Generation\n4250 TWh',
flows = [4250, -1418, -1266, -1017, -8.79, -541],
orientations = [0, 0, -1, 1, -1, 1],
labels = [None, 'Residential', 'Commercial', 'Industrial', 'Transportation', '?'],
prior = 1,
pathlengths = [0.2, 0.2, 0.2, 0.2, 0.7, 0.2],
# trunklength = 2.5,
connect = (1, 0)
)
plt.savefig('./Global_Electrical_Energy_Prod_Cons_2005.png',
dpi = 300,
frameon = None,
transparent = True,
scale = 0.0001)
sankey.finish()
plt.show()
从 plt.show()
启动的 Python.app
保存的预期结果。
莫名其妙的结果(编辑:这是混乱的,但这是因为它仍然设置为 300 dpi,使用默认值让 Whosebug 正确显示它)。我刚刚尝试了 .pdf
和 .svg
并得到了相同的结果。
您需要完成桑基图才能保存。更改这些行的顺序:
sankey.finish()
plt.savefig(...)
使用 matplotlib
从维基百科生成数据的 Sankey 图(看起来非常糟糕的数据,但我想我会找出代码然后去寻找更好的数据)。而且我似乎无法正确缩放文件。
在 macOS 10.12.4 Python.app
系统 plt.show()
中 显示 正常,简单示例保存 fine,但添加 scale = 0.0001
似乎以某种方式破坏了 plt.savefig()
。我试过更改 dpi
参数,但它似乎根本不会影响结果。我还尝试将 scale
参数添加到 savefig
但这似乎根本没有做任何事情(甚至没有破坏它?)。
我可以从 Python.app
保存它,它看起来不错,但我真的很想弄清楚哪里出了问题。
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 = [], title='Global Electricity Production & Consumption 2005'
)
g = [-12192, 6157, 1960, 387, 2383, 1240] # generated
c = [4250, -7942, -1418, -1266, -1017, -8.79] # consumed
sankey = Sankey(ax = ax,
format = '%.5G',
head_angle = 135,
unit = ' TWh',
gap = 0.3,
scale = 0.0001,
margin = 0.0,
offset = 0.2,
shoulder = 0.0)
sankey.add(
patchlabel = 'Production',
flows = g,
orientations = [0, 0, -1, -1, 1, 1],
labels = [None, 'Coal', 'Natural Gas', 'Petroleum', 'Nuclear', 'Renewable'],
pathlengths = [0.0, 0.2, 0.2, 0.6, 0.2, 0.2]
)
sankey.add(
flows = [12192, -4250, -7942],
orientations = [0, 0, -1],
labels = [None, None, 'Conversion Losses'],
pathlengths = [-.2, -.2, 0.4],
# trunklength = 1.0,
prior = 0,
connect = (0, 0)) # denotes which flow index from the prior to connect to which flow index in this one
sankey.add(
patchlabel = 'Gross Generation\n4250 TWh',
flows = [4250, -1418, -1266, -1017, -8.79, -541],
orientations = [0, 0, -1, 1, -1, 1],
labels = [None, 'Residential', 'Commercial', 'Industrial', 'Transportation', '?'],
prior = 1,
pathlengths = [0.2, 0.2, 0.2, 0.2, 0.7, 0.2],
# trunklength = 2.5,
connect = (1, 0)
)
plt.savefig('./Global_Electrical_Energy_Prod_Cons_2005.png',
dpi = 300,
frameon = None,
transparent = True,
scale = 0.0001)
sankey.finish()
plt.show()
从 plt.show()
启动的 Python.app
保存的预期结果。
莫名其妙的结果(编辑:这是混乱的,但这是因为它仍然设置为 300 dpi,使用默认值让 Whosebug 正确显示它)。我刚刚尝试了 .pdf
和 .svg
并得到了相同的结果。
您需要完成桑基图才能保存。更改这些行的顺序:
sankey.finish()
plt.savefig(...)