我在字典中保留了一组数字参考,以便我可以在以后保存它们.我很困扰,如果调用show()命令并首先查看它们,保存的数字是空白的.由于show()命令阻止而且我没有使用类似spyder的解释器,所以在我到达之前我必须关闭这些数字savefig()
figures['myfig_1'] = figure()
...
figures['myfig_n'] = figure()
...
#show() #disabling this makes the problem go away
print "Saving:"
for fig in figures:
figure(figures[fig].number)
savefig(fig)
print "Figure " + str(figures[fig].number) + ": " + fig
Run Code Online (Sandbox Code Playgroud)
这里的print语句给了我指示字典仍然完整,我认为这意味着我没有丢失图形引用(它们仍然在它们的.number属性中返回有意义的数字.)
我注意到的另一个问题是,当我在类中完成类似的操作时,将字典存储为成员并将存储分开并将函数保存到自己的方法中,这不会发生.有什么关于我关闭数字或存储数据的方式,这使得数据松散他们的数据?
一般来说,在这种情况下,不要使用matplotlib的交互式matlab-ish状态机接口.它适用于交互式使用.
你试图让一个数字"活跃",然后创建一个新的数字.如果只保留返回的图形和/或轴对象并直接使用它们,则哪个图形处于活动状态并不重要.(另外,不要使用通配符导入!稍后当你维护代码时,你会后悔!)
做这样的事情:
import matplotlib.pyplot as plt
figures = {}
figures['a'] = plt.figure()
ax = figures['a'].add_subplot(111)
ax.plot(range(10), 'ro-')
figures['b'] = plt.figure()
ax = figures['b'].add_subplot(111)
ax.plot(range(10), 'bo-')
plt.show()
for name, fig in figures.iteritems():
fig.savefig('figure-%s.png' % name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4751 次 |
| 最近记录: |