【问题标题】:Can't pickle or dill FigureCanvasQTAggCan't pickle or dill FigureCanvasQTAgg
【发布时间】:2019-02-05 18:58:36
【问题描述】:

我正在尝试将图形对象转储到 pickle 文件中,但使用 Python 3.7.1 时一直失败。

#python.version = 3.7.3
#pickle.format_version = '4.0'
#dill.__version__ = '0.2.9'
print(ax, type(ax))
print(matplotlib.get_backend())
print(matplotlib.__version__)
print(sys.version_info)
with open("MyFile", "wb") as dill_file:
    dill.dump(ax, dill_file)
pt.savefig("MyFile_"+now)

结果是:

AxesSubplot(0.125,0.11;0.775x0.35) 
<class'matplotlib.axes._subplots.AxesSubplot'>
Qt5Agg
3.0.2
sys.version_info(major=3, minor=7, micro=1, releaselevel='final', serial=0)

然后报错:

> 回调错误:无法腌制 FigureCanvasQTAgg 对象

上面的代码不在一个类中。我尝试过其他后端(Agg、TkAgg 等),结果相同。我也尝试过仅使用 pickle.dump 获得相同的结果。

【问题讨论】:

  • 我无法复制。这对我来说在 python 3.6.6、mpl 3.0.2 上运行良好。
  • @ImportanceOfBeingErnest 我正在使用 python 3.7.1,我更新了我的问题。
  • 是的,但 python 版本无关紧要。我刚刚测试过,它也适用于 3.7.1。
  • 无赖。现在我只是将数据保存到 csv,然后用一个绘制它的程序来调用它......这有一个好处是内存占用更小。

标签: python python-3.x matplotlib pickle dill


【解决方案1】:

根据Saving interactive Matplotlib figures,你应该可以做到这一点

...但这是实验性的并且有缺点。如该答案所述,考虑保存到 .SVG 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多