multiple font python django matplotlib labels

font - python plot multiple figures



matplotlib matshow etiquetas (1)

Empecé a usar matplotlib hace un mes, así que todavía estoy aprendiendo.
Estoy tratando de hacer un mapa de calor con matshow. Mi código es el siguiente:

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)

donde alpha es un modelo de django con 4fields: ''ABC'', ''DEF'', ''GHI'', ''JKL''

La cosa es que no sé por qué, la etiqueta ''ABC'' no aparece, dejando la última celda sin etiqueta.
Si alguien tuviera una idea de cómo modificar mi script para que aparezca el ''ABC'', le agradecería :)


Lo que está sucediendo es que los xticks en realidad se extienden fuera de la figura mostrada cuando se usa matshow. (No estoy muy seguro de por qué es exactamente esto. Aunque casi nunca he usado matshow).

Para demostrar esto, mire la salida de ax.get_xticks() . En su caso, es array([-1., 0., 1., 2., 3., 4.]) . Por lo tanto, cuando configura las etiquetas xtick, "ABC" está en <-1, -1>, y no se muestra en la figura.

La solución más sencilla es anteponer una etiqueta en blanco a su lista de etiquetas, por ejemplo,

ax.set_xticklabels(['''']+alpha) ax.set_yticklabels(['''']+alpha)

Como un ejemplo completo:

import numpy as np import matplotlib.pyplot as plt alpha = [''ABC'', ''DEF'', ''GHI'', ''JKL''] data = np.random.random((4,4)) fig = plt.figure() ax = fig.add_subplot(111) cax = ax.matshow(data, interpolation=''nearest'') fig.colorbar(cax) ax.set_xticklabels(['''']+alpha) ax.set_yticklabels(['''']+alpha) plt.show()