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.