matplotlib barre de couleur ne fonctionne pas (en raison de la collecte des ordures?)
J'ai un complot en fonction similaire à celle
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)
Quand je définis la fonction ci-dessus dans ipython
(à l'aide de la --pylab
option), puis d'appeler
fct()
colorbar()
J'obtiens une erreur
"RuntimeError: Non cartographiables a été trouvé à utiliser pour la barre de couleur création.".
def fct():
f=figure()
x,y=mgrid[0:5,0:5]
z=sin(x**2+y**2)
pcolormesh(x,y,z)
Alors il fonctionne. Je suppose que cela a à voir avec la collecte des ordures ménagères - comment puis-je éviter ce problème dans le premier exemple?
La deuxième réponse peut être pertinente: stackoverflow.com/questions/2643953/...
OriginalL'auteur John Smith | 2014-04-15
Vous devez vous connecter pour publier un commentaire.
C'est parce que vous premier exemple, vous utilisez
ax.polormesh
, paspyplot.polotmesh
(espace de noms importés parpylab
), lorsque vous appelezcolorbar()
(en faitplt.colorbar()
), il a perdu la trace de cartographiables et qui ax il devrait faire de la barre de couleur.Donc l'ajout de ces lignes qui vont la faire fonctionner:
Maintenant, vous avez mentionné que votre intrigue réelle est beaucoup plus complexe. Vous voulez vous assurer que c'est le
ax.get_children()[2]
ou vous pouvez choisir par recherchez unmatplotlib.collections.QuadMesh
instance.for PCM in ax.get_children(): if type(PCM) == matplotlib.image.AxesImage: break
OriginalL'auteur CT Zhu
Je pense qu'il a plus à voir avec la
pylab
machine de l'etat et de portée.Une meilleure pratique serait de faire ce qui suit (explicite est mieux que de manière implicite):
OriginalL'auteur Paul H
Vous fonction est assez petit et ne prend pas d'arguments, alors, avez-vous vraiment besoin d'envelopper le tracé dans une fonction? Qu'en est:
OriginalL'auteur wflynny