【问题标题】:Python error "unexpected keyword argument 'callbacks'" when unpickling matplotlib figure解开 matplotlib 图形时出现 Python 错误“意外的关键字参数‘回调’”
【发布时间】: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


    【解决方案1】:

    我遇到了同样的问题,我试图加载腌制图形的系统中的 matplotlib 版本似乎比用于创建腌制文件的版本旧。只需更新 matplotlib,就应该这样做 - 或者至少对我来说已经足够了。

        pip install --upgrade matplotlib
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 2011-12-28
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多