如何通过pickle编辑已保存的图?

时间:2016-08-09 14:32:58

标签: python matplotlib pickle

我想保存和编辑matplotlib生成的图(不是图像文件,更喜欢可编辑的文件)。 我使用了pickle包,我可以通过以下代码保存并打开一个图。

#-------------
#save code
#-------------

import matplotlib.pyplot as plt
import numpy as np
import pickle

fig = plt.figure('exp_plot')
ax = fig.add_subplot(111)
ax.set_xlim(0, 10)
ax.set_xlabel("x")
ax.set_ylabel("y")

x = np.linspace(0, 10)
y = np.exp(x)
ax.plot(x, y)
pickle.dump(ax, file('exp_plot.pickle', 'wb'))

#-------------
#load code
#-------------

import matplotlib.pyplot as plt
import pickle

fig = pickle.load(open('exp_plot.pickle', 'rb'))
plt.show()

然而,我无法通过"图选项"来编辑绘图(例如,更改x轴范围,编辑绘图标题,更改线条样式)。图窗口的窗口。 当我尝试更改窗口上的x轴范围时,错误消息如下所示。

Traceback (most recent call last):
  File "C:\Anaconda2\lib\site-packages\matplotlib\backends\qt_editor\formlayout.py", line 472, in apply
    self.apply_callback(self.formwidget.get())
  File "C:\Anaconda2\lib\site-packages\matplotlib\backends\qt_editor\figureoptions.py", line 124, in apply_callback
    axes.set_yscale(yscale)
  File "C:\Anaconda2\lib\site-packages\matplotlib\axes\_base.py", line 3096, in set_yscale
    self.autoscale_view(scalex=False)
  File "C:\Anaconda2\lib\site-packages\matplotlib\axes\_base.py", line 2198, in autoscale_view
    self.set_ybound(y0, y1)
  File "C:\Anaconda2\lib\site-packages\matplotlib\axes\_base.py", line 2964, in set_ybound
    self.set_ylim(lower, upper, auto=None)
  File "C:\Anaconda2\lib\site-packages\matplotlib\axes\_base.py", line 3055, in set_ylim
    self.callbacks.process('ylim_changed', self)
  File "C:\Anaconda2\lib\site-packages\matplotlib\cbook.py", line 559, in process
    """
AttributeError: 'CallbackRegistry' object has no attribute 'callbacks'

注意我可以通过代码编辑x轴范围和标题,但这对我来说不方便。 您是否知道如何通过"图选项"编辑已保存的图表?图窗口的窗口。

我在win32上使用Python 2.7.11,Anaconda 2.4.1(32位),matplotlib 1.5.1。

0 个答案:

没有答案