лейблы matplotlib matshow - PullRequest
       15

лейблы matplotlib matshow

21 голосов
/ 20 августа 2010

Я начал использовать matplotlib месяц назад, так что я все еще учусь.
Я пытаюсь создать тепловую карту с помощью matshow.Мой код следующий:

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)

, где альфа - это модель из django с 4 полями: «ABC», «DEF», «GHI», «JKL»

, дело в том, чтоЯ не знаю, почему, ярлык «ABC» не появляется, оставляя последнюю ячейку без метки.
Если бы кто-нибудь мог понять, как изменить мой сценарий таким образом, чтобы он отображался как «ABC», я был быблагодарен:)

1 Ответ

42 голосов
/ 20 августа 2010

Что происходит, так это то, что при использовании matshow символы на самом деле выходят за пределы отображаемой фигуры. (Я не совсем уверен, почему это так. Я почти никогда не использовал matshow.)

Чтобы продемонстрировать это, посмотрите на вывод ax.get_xticks(). В вашем случае это array([-1., 0., 1., 2., 3., 4.]). Следовательно, когда вы устанавливаете метки xtick, «ABC» имеет значение <-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()

Matshow example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...