Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过pickle编辑保存的绘图?_Python_Matplotlib_Pickle - Fatal编程技术网

Python 如何通过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

我想保存和编辑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。

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