【问题标题】:how to save python workspace with plots in a file如何在文件中保存带有绘图的python工作区
【发布时间】:2016-03-17 20:10:08
【问题描述】:

我想将在 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"))

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

【问题讨论】:

    标签: python matplotlib plot pickle


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-02
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      相关资源
      最近更新 更多