Python 如何通过pickle编辑保存的绘图?
我想保存和编辑matplotlib生成的绘图(不是图像文件,更喜欢可编辑文件)。 我使用了pickle包,我可以通过以下代码保存和打开绘图Python 如何通过pickle编辑保存的绘图?,python,matplotlib,pickle,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
#-------------
#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。您是否尝试过酸洗图形而不是轴?这可能没有帮助,因为显然回调没有正确注册,但可能值得一试。一年前我自己也尝试过这样做,结果发现你可以很容易地修改数据,但一旦你开始在其中添加一些稍微高级的内容,它们就不再可以修改了。另外,我不建议使用泡菜作为数字的长期存储,请记住这一点。这是因为如果发布了python/pickle/matplotlib/any依赖项的新版本,则旧的图形可能不再可加载。到目前为止,我会寻找另一个解决方案…不幸的是…(上次我找的时候找不到任何人…)。