matplotlib Farbskala nicht arbeiten (durch die garbage-collection?)
Habe ich eine zeichnen-Funktion, ähnlich wie diese
def fct():
f=figure()
ax=f.add_subplot(111)
x,y=mgrid[0:5,0:5]
z=sin(x**2+y**2)
ax.pcolormesh(x,y,z)
Wenn ich definieren Sie die Funktion, die oben im ipython
(mit der --pylab
option), und rufen Sie dann
fct()
colorbar()
Bekomme ich eine Fehlermeldung
"Absturz mit Laufzeitfehler: Nicht abbildbar war, fand Verwendung für die colorbar Schöpfung.".
def fct():
f=figure()
x,y=mgrid[0:5,0:5]
z=sin(x**2+y**2)
pcolormesh(x,y,z)
Dann funktioniert es. Ich denke, das hat damit zu tun, garbage collection - wie kann ich verhindern, dass dieses problem im ersten Beispiel?
Die zweite Antwort, die relevant sein können: stackoverflow.com/questions/2643953/...
InformationsquelleAutor John Smith | 2014-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist, weil Sie das erste Beispiel, verwenden Sie
ax.polormesh
, nichtpyplot.polotmesh
(namespace importiertpylab
), wenn Sie anrufencolorbar()
(eigentlichplt.colorbar()
), verlor die Spur, die abbildbar und die Axt sollte es Farbskala.Daher das hinzufügen der folgenden Zeilen werden damit es funktioniert:
Nun, Sie erwähnten, dass Ihre eigentliche plot ist viel komplexer. Sie wollen sicherstellen, dass es ist die
ax.get_children()[2]
oder Sie können wählen, die es vom Aussehen für einematplotlib.collections.QuadMesh
Instanz.for PCM in ax.get_children(): if type(PCM) == matplotlib.image.AxesImage: break
InformationsquelleAutor CT Zhu
Ich denke, es hat mehr zu tun mit der
pylab
state-Maschine und scoping.Eine bessere Praxis wäre das folgende (explizit ist besser als implizit):
InformationsquelleAutor Paul H
Ihnen die Funktion ist Recht klein und nimmt keine Argumente an, so dass Sie wirklich brauchen, wickeln Sie das Plotten in eine Funktion? Was ist mit:
InformationsquelleAutor wflynny