2010-08-20 16 views
10

Matplotlib'i bir ay önce kullanmaya başladım, bu yüzden hala öğreniyorum.
Matshow ile bir ısı haritası yapmaya çalışıyorum. Benim kodu aşağıdadır:matplotlib matshow etiketleri

alfa 4fields ile django bir modeldir
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) 

: 'GHI', 'JKL'

şey bende olmayan 'ABC', 'DEF' olduğunu nedenini biliyorsunuz, 'ABC' etiketi görünmüyor, son hücreyi etiketsiz bırakıyor. Birisi 'ABC' görünmesi için bir şekilde benim komut nasıl değiştirileceği bir ipucu istiyorsanız
ne oluyor matshow kullanırken xticks aslında görüntülenen şeklin dışında uzatmak olmasıdır :)

cevap

24

minnettar olacaktır. (Tam olarak neden bu olduğundan emin değilim. Yine de neredeyse hiç matshow kullanmadım.)

Bunu göstermek için ax.get_xticks() çıkışına bakın. Sizin durumunuzda, array([-1., 0., 1., 2., 3., 4.]). Bu nedenle, xtick etiketlerini ayarladığınızda, "ABC" < -1, -1> konumunda ve şekilde görüntülenmiyor.

En kolay çözüm, boş bir etiketi yalnızca etiketler listenize eklemektir, örn.

tam bir örnek olarak
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

+0

teşekkür ederiz! Aynı şeyi görebildim :) Ama başka bir problemim var .. İki heatmaps yapıyorum, bir (4x4) ve başka (9x9). Program, ısı haritası 0,2,4,6,8'i etiketliyor. Bu yüzden etiketlemeye çalıştığımda, sadece bu sayılara bir isim veriyor. ax.set_xticks (matplotlib.numpy.arange (len (list_names))) ile denedim ancak hücrelerin boyutunu azaltın. – pavid

+2

@Patricia - Kene konumlarını manuel olarak ayarlarsanız, .axis ('image') 'onları ayarladıktan sonra anlattığınız sorunu çözmelisiniz. Umarım yardımcı olur! –

+0

Teşekkürler! Sorun çözüldü :) Yani ax.axis ('image') görüntünün orijinal boyutunu geri yüklüyor, değil mi? – pavid