Verificamos profundamente cada tutorial de nuestro sitio web con el objetivo de mostrarte siempre información veraz y actual.
Solución:
Lo que sucede es que los xticks en realidad se extienden fuera de la figura mostrada cuando se usa matshow. (No estoy muy seguro de por qué sucede esto. Sin embargo, casi nunca he usado matshow).
Para demostrar esto, mire la salida de ax.get_xticks()
. en tu 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 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()
La otra forma de hacer esto es especificar las marcas y luego establecer las etiquetas correspondientes. Entonces no tienes que preocuparte por el tic adicional fuera de los límites. Esto aparece en muchas demostraciones de matplotlib. Así que aquí, tenga en cuenta las llamadas adicionales al ax.set_xticks
y ax.set_yticks
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)
xaxis = np.arange(len(alpha))
ax.set_xticks(xaxis)
ax.set_yticks(xaxis)
ax.set_xticklabels(alpha)
ax.set_yticklabels(alpha)
plt.show()