如何使用文件中的图保存python工作区

时间:2016-03-17 20:10:08

标签: python matplotlib plot pickle

我想将IPython上完成的工作存储在一个文件中。说我做了一个sin(x)的情节

import numpy as np
import matplotlib.plot as plt
import pickle
x = np.arange(-3, 3, 0.01)
y = np.sin(np.pi*x)
fig = plt.figure()
ax = fig.add_subplot(111)
line, = ax.plot(x, y)
pickle.dumb(['x': x, 'y':y], open("save.p", "wb"))

将数据保存在" save.p"在另一个Ipython解释器上我只需键入

a = pickle.load( open("save.p", "rb"))

这里一切都很好,但是我怎样才能保存我所做的情节呢?我试图替换

pickle.dumb(['x': x, 'y':y], open("save.p", "wb"))

pickle.dumb(['x': x, 'y':y, 'fig': fig, 'ax': ax], open("save.p", "wb"))

但它并没有为我提供任何情节。你有什么建议给我?

1 个答案:

答案 0 :(得分:1)

1)我认为它应该是pickle.dump(),而不是pickle.dumb

2)简单的matplotlib数字是可选的,但我不建议将它作为长期存储,因为你可能无法用不同版本的matplotlib打开它们。当你腌制时,你应该腌制你想要保存的整个对象,例如pickle.dump(fig, open( "save.p", "wb" ))。如果你开始使用一些更高级的代码,例如在c或Python lambda中实现的东西 - 表达式它将不起作用......

3)关于本地工作空间我没有解决方案。您可以使用locals() - 函数,但这将为您提供local - 命名空间中的所有内容。也许你可以在运行任何东西之前保存local(但是在所有导入之后!)然后在执行代码后将它与local - 列表进行比较?当你有这个简化列表时,你可以再次腌制它或使用numpy.save来保存它。然而,这只是一个疯狂猜测的解决方案...