matplotlib matshow labels

I start using matplotlib a month ago, so I'm still learning.
I'm trying to do a heatmap with matshow. My code is the following:

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)

where alpha is a model from django with 4fields: 'ABC', 'DEF', 'GHI', 'JKL'

the thing is that I don't know why, the label 'ABC' doesn't appear, leaving the last cell without label.
If someone would have a clue how to modify my script in a way to appear the 'ABC' I would be grateful :)

22
задан gotgenes 23 July 2011 в 01:57
поделиться

1 ответ

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

Чтобы продемонстрировать это, посмотрите на вывод ax.get_xticks () . В вашем случае это массив ([- 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

46
ответ дан 29 November 2019 в 04:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: