Ответ 1
Что происходит, так это то, что xticks фактически выходят за пределы отображаемой фигуры при использовании matshow. (Я не совсем уверен, почему это так. Я почти никогда не использовал matshow.)
Чтобы продемонстрировать это, посмотрите на вывод ax.get_xticks()
. В вашем случае это array([-1., 0., 1., 2., 3., 4.])
. Поэтому, когда вы устанавливаете метки xtick, "ABC" имеет значение & lt; -1, -1> и не отображается на рисунке.
Самое простое решение - просто добавить пустую метку в список меток, например,
ax.set_xticklabels(['']+alpha)
ax.set_yticklabels(['']+alpha)
В качестве полного примера:
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()