matplotlib matshow étiquettes
- Je commencer à utiliser matplotlib il y a un mois, donc je suis encore à apprendre.
Je suis en train de faire une heatmap avec matshow. Mon code est le suivant:
data = numpy.array(a).reshape(4, 4)
cax = ax.matshow(data, interpolation='nearest', cmap=cm.get_cmap('PuBu'), norm=LogNorm())
cbar = fig.colorbar(cax)
ax.set_xticklabels(alpha)
ax.set_yticklabels(alpha)
où alpha est un modèle de django avec 4fields: 'ABC', 'DEF', 'GHI', 'JKL'
le truc c'est que je ne sais pas pourquoi, l'étiquette de " ABC " n'apparaît pas, en laissant la dernière cellule sans étiquette.
Si quelqu'un aurait une idée de comment modifier mon script dans une manière d'apparaître de la " ABC " je vous serais reconnaissant 🙂
OriginalL'auteur psoares | 2010-08-20
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe est que le xticks étendre à l'extérieur de l'affichage de la figure lors de l'utilisation de matshow. (Je ne suis pas tout à fait sûr exactement pourquoi il en est. Je l'ai presque jamais utilisé matshow, cependant).
Pour démontrer cela, chercher à la sortie de
ax.get_xticks()
. Dans votre cas, c'estarray([-1., 0., 1., 2., 3., 4.])
. Par conséquent, lorsque vous définissez la xtick les étiquettes, "ABC" est à <-1, -1>, et n'est pas affiché dans la figure.La solution la plus simple est juste pour ajouter une étiquette vierge à votre liste d'étiquettes, par exemple
Comme un exemple complet:
Si vous définissez la tique endroits manuellement, un appel à
ax.axis('image')
après vous les mettez devrait résoudre le problème que vous avez décrit. Espérons que ça aide!Merci! Problème résolu 🙂 Donc ax.axe('image') restaurer la taille d'origine de l'image, à droite?
Fondamentalement. (Je suis honnêtement pas sûr de savoir pourquoi les limites de l'axe de changement lorsque la tique emplacements sont définies... Ce peut-être un bug...) Voir ici pour plus d'informations sur ce
ax.axis('image')
n': matplotlib.sourceforge.net/api/...OriginalL'auteur Joe Kington