ickelfiguren aus matplotl

Ich versuche, das einfache Beispiel für eine Gurkenfigur anhand der folgenden Frage nachzubilden:Speichern interaktiver Matplotlib-Figuren, das auch von @ bezogen wiSpeichern von Matplotlib-Figuren mit Pickle. Wenn ich jedoch die angegebenen Codes ausführe, scheinen die Zahlen in Ordnung zu sein, aber dann erhalte ich eine Fehlermeldung, wenn ich versuche, die eingelegte Zahl zu laden. Ich verwende Canopy Enthought (v1.6.2.3262), Matplotlib 1.5.1-1 und Numpy 1.9.2-3 unter Python 2.7.3-1. Der Pickle-Code lautet:

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

# Plot simple sinus function
fig_handle = plt.figure()
x = np.linspace(0,2*np.pi)
y = np.sin(x)
plt.plot(x,y)

# Save figure handle to disk
pl.dump(fig_handle,file('sinus.pickle','w'))`

Der Code zum Laden der Figur lautet:

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

# Load figure from disk and display
fig_handle = pl.load(open('sinus.pickle','rb'))
fig_handle.show()

und der Fehler, den ich erhalte, ist:

%run "Z:\EFNHigh_Res\show_picklefig.py"
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Z:\EFNHigh_Res\show_picklefig.py in <module>()
      4 
      5 #plot simple sinus function
----> 6 fig_handle = pl.load(open('Z:\EFNHigh_Res\sinus.pickle','rb'))
      7 fig_handle.show()

C:\Users\Tom\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.6.2.3262.win-x86_64\lib\pickle.pyc in load(file)
   1376 
   1377 def load(file):
-> 1378     return Unpickler(file).load()
   1379 
   1380 def loads(str):

C:\Users\Tom\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.6.2.3262.win-x86_64\lib\pickle.pyc in load(self)
    856             while 1:
    857                 key = read(1)
--> 858                 dispatch[key](self)
    859         except _Stop, stopinst:
    860             return stopinst.value

C:\Users\Tom\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.6.2.3262.win-x86_64\lib\pickle.pyc in load_global(self)
   1088         module = self.readline()[:-1]
   1089         name = self.readline()[:-1]
-> 1090         klass = self.find_class(module, name)
   1091         self.append(klass)
   1092     dispatch[GLOBAL] = load_global

C:\Users\Tom\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.6.2.3262.win-x86_64\lib\pickle.pyc in find_class(self, module, name)
   1122     def find_class(self, module, name):
   1123         # Subclasses may override this
-> 1124         __import__(module)
   1125         mod = sys.modules[module]
   1126         klass = getattr(mod, name)

ImportError: No module named copy_reg

Ich weiß, dass es einen Unterschied zwischen Python 3 und 2 gibt. In dieser Datei sollte anstelle von open der Speicherauszug für Python 2 verwendet werden (und ich nehme die Beizlast an). Deshalb habe ich beide Kombinationen im Code ausprobiert.

Ich bin mir nicht sicher, was der Fehler mir sagt, daher konnte ich hier nicht weiterhelfen, um die Fehler zu verstehen oder das Problem zu beheben.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage