gpt4 book ai didi

python - Matplotlib 子图图 - savefig() 不会输出 PDF。 "NoneType"错误

转载 作者:太空狗 更新时间:2023-10-29 18:27:57 26 4
gpt4 key购买 nike

以下是我正在编写的代码的精简版本,用于制作包含多个子图的图形。问题出现在最后一行,fig.savefig("foo"+ ".pdf", format='pdf')。我收到以下错误:

AttributeError: "'NoneType' object has no attribute 'print_figure'"

谁能告诉我这是怎么回事?谢谢!

import matplotlib.pyplot as plt
from pdb import set_trace as st
import numpy as np


Time = np.array([0,1,2,3,4])
Load = np.array([1,2,3,4,5])
Cell = np.array([6,9,2,5,4])

axialLoadDueToCellPressure = 5.5 * Cell

volumePlotFormat = 'double-wide'

fig = plt.Figure()
ax1 = plt.subplot2grid((3,2), (0,0))


ax1.plot((Time/1000/60),
(Load + axialLoadDueToCellPressure)/6, 'k-')

ax1.plot((Time/1000/60), Cell, 'k--')

st()
fig.savefig("foo" + ".pdf", format='pdf')

最佳答案

当使用 fig.savefig() 方法时,问题出在 Canvas 上。此时 pyplot 附加到 Canvas,但您的图形没有。我同意你的看法,这是相当出乎意料的。如果您明确将 Figure 附加到 Canvas,这将不是问题。例如添加行:

fig.set_canvas(plt.gcf().canvas)

将解决此问题。所以你的整个代码将是:

import matplotlib.pyplot as plt
from pdb import set_trace as st
import numpy as np


Time = np.array([0,1,2,3,4])
Load = np.array([1,2,3,4,5])
Cell = np.array([6,9,2,5,4])

axialLoadDueToCellPressure = 5.5 * Cell

volumePlotFormat = 'double-wide'

fig = plt.Figure()
fig.set_canvas(plt.gcf().canvas)
ax1 = plt.subplot2grid((3,2), (0,0))


ax1.plot((Time/1000/60),
(Load + axialLoadDueToCellPressure)/6, 'k-')

ax1.plot((Time/1000/60), Cell, 'k--')

fig.savefig("foo3" + ".pdf", format='pdf')

您也可以使用 pyplot 自己的 savefig 方法,但我认为 Figure 了解 Canvas 总体上可能是一件好事。

关于python - Matplotlib 子图图 - savefig() 不会输出 PDF。 "NoneType"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com