【发布时间】:2021-01-17 15:16:07
【问题描述】:
由于大量模拟,我正在生成绘图。为了在之后更改它们(轴范围等),我不仅将它们保存为 pdf,而且还腌制了图形。
import pickle
import matplotlib.pyplot as plt
f = plt.figure()
# x1 and x2 are lists of floats
n1, bins1, patches = plt.hist(x1, 50, density=False, label="x1")
n2, bins2, patches = plt.hist(x2, 50, density=False, label="x2")
plt.savefig("hist.pdf")
with open("hist.pickle", "wb") as fs:
pickle.dump(f, fs)
我稍后再打开它们
import pickle
import matplotlib.pyplot as plt
I = pickle.load( open("hist.pickle", "rb" ) )
更改轴范围等并将它们再次保存为 pdf。到目前为止,这总是在本地工作,但最近我在一个带有作业调度系统的集群上运行了一些非常长的计算。生成的 pdf 文件可以工作,但是当我想用上面的代码打开腌制图时,我得到:
Traceback (most recent call last):
File "change_axis.py", line 4, in <module>
I = pickle.load( open( "hist.pickle", "rb" ) )
File "/users/myname/anaconda3/envs/myenv/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 161, in __setstate__
self.__init__(**state)
似乎腌制的人物不知何故坏了。我已经尝试运行脚本打开集群中计算机上的 pickle 文件,以排除不同版本的任何问题,例如matplotlib,但它没有帮助。我的经验教训是下次腌制原始数据 x1 和 x2。有什么办法可以修复它并获取当前数据?
【问题讨论】:
标签: python matplotlib pickle