选择要显示在屏幕上的数字,以及使用Python的matplotlib将哪些数字保存到文件

问题描述

| 我想使用
matplotlib.pyplot
在Python中创建不同的图形。然后,我想将其中一些保存到文件中,而其他一些则应使用
show()
命令显示在屏幕上。 但是,ѭ1显示所有创建的图形。我可以通过创建不想在屏幕上显示的图后调用ѭ3来避免这种情况,如以下代码所示:
import matplotlib.pyplot as plt

y1 = [4,2,7,3]
y2 = [-7,-1,-3]

plt.figure()
plt.plot(y1)
plt.savefig(\'figure1.png\')
plt.close()

plt.figure()
plt.plot(y2)

plt.show()
plt.close(\'all\')
这将保存第一个图形并显示第二个图形。但是,我收到一条错误消息:   无法调用“事件”命令:应用程序在执行时已被破坏 是否可以更优雅地选择要显示的人物? 另外,第一个“ 5”命令是否多余?不管我给与否,这似乎都没有什么不同。 提前谢谢了。     

解决方法

更好的方法是使用
plt.clf()
代替
plt.close()
。 此外,
plt.figure()
会创建一个新图形,而您只需使用with6ѭ清除上一个图形即可:
import matplotlib.pyplot as plt

y1 = [4,2,7,3]
y2 = [-7,-1,-3]

plt.figure()
plt.plot(y1)
plt.savefig(\'figure1.png\')
plt.clf()

plt.plot(y2)

plt.show()
plt.clf()
此代码不会生成错误或警告,例如无法调用“事件”命令...     ,一般来说,您可以关闭数字。作为一个简单的例子:
import matplotlib.pyplot as plt

fig1 = plt.figure()
plt.plot(range(10),\'ro-\')
plt.title(\'This figure will be saved but not shown\')
fig1.savefig(\'fig1.png\')
plt.close(fig1)

fig2 = plt.figure()
plt.plot(range(10),\'bo\')
plt.title(\'This figure will be shown\')

plt.show()
至于第一个
plt.figure()
通话是否出色,取决于您在做什么。通常,您要挂在它返回的图形对象上并使用它,而不要使用matplotlib的matlab-ish状态机接口。 当您制作更复杂的图时,通常需要额外的代码行来执行以下操作:
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(range(10))
优点是您不必担心哪个图形或轴是“活动的”,您只需要引用特定的轴或图形对象即可。