如何在文件中保存带有绘图的 python 工作区
how to save python workspace with plots in a file
我想将 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"))
要在另一个 Ipython 解释器上获取保存在 "save.p" 上的数据,我只需要输入
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) 我认为应该是 pickle.dump(),而不是 pickle.dumb
2) 简单的 matplotlib 图形是可腌制的,但我不建议将其作为它们的长期存储,因为您可能无法使用不同版本的 matplotlib 打开它们。腌制时,应该腌制要保存的整个对象,例如pickle.dump(fig, open( "save.p", "wb" ))
。如果您开始使用一些更高级的代码,例如用 c 或 Python lambda
表达式实现的东西,它将无法工作...
3) 关于本地工作空间,我没有解决方案。您也许可以使用 locals()
-函数,但这将为您提供 local
- 命名空间中的所有内容。也许您可以在 运行 之前保存 local
(但在所有导入之后!),然后在执行代码后将其与 local
列表进行比较?当你有这个简化列表时,你可以再次腌制它或使用 numpy.save
来保存它。然而,这只是一个大胆猜测的解决方案......
我想将 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"))
要在另一个 Ipython 解释器上获取保存在 "save.p" 上的数据,我只需要输入
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) 我认为应该是 pickle.dump(),而不是 pickle.dumb
2) 简单的 matplotlib 图形是可腌制的,但我不建议将其作为它们的长期存储,因为您可能无法使用不同版本的 matplotlib 打开它们。腌制时,应该腌制要保存的整个对象,例如pickle.dump(fig, open( "save.p", "wb" ))
。如果您开始使用一些更高级的代码,例如用 c 或 Python lambda
表达式实现的东西,它将无法工作...
3) 关于本地工作空间,我没有解决方案。您也许可以使用 locals()
-函数,但这将为您提供 local
- 命名空间中的所有内容。也许您可以在 运行 之前保存 local
(但在所有导入之后!),然后在执行代码后将其与 local
列表进行比较?当你有这个简化列表时,你可以再次腌制它或使用 numpy.save
来保存它。然而,这只是一个大胆猜测的解决方案......