2011-07-16 16 views
11

Yığın taşmasıyla ilgili birçok matplotlib colorbar sorusu var, ancak sorunumu çözmek için bunları anlayamıyorum.Matplotlib Colorbar Ticks nasıl eklenir

Yticklabels'i renk çubuğuna nasıl ayarlayabilirim?

from pylab import * 
from matplotlib.colors import LogNorm 
import matplotlib.pyplot as plt 

f = np.arange(0,101)     # frequency 
t = np.arange(11,245)    # time 
z = 20*np.sin(f**0.56)+22   # function 
z = np.reshape(z,(1,max(f.shape))) # reshape the function 
Z = z*np.ones((max(t.shape),1))  # make the single vector to a mxn matrix 
T, F = meshgrid(f,t) 
fig = plt.figure() 
ax = fig.add_subplot(111) 
plt.pcolor(F,T,Z, norm=LogNorm(vmin=z.min(),vmax=z.max())) 
plt.xlim((t.min(),t.max())) 
mn=int(np.floor(Z.min()))  # colorbar min value 
mx=int(np.ceil(Z.max()))   # colorbar max value 
md=(mx-mn)/2      # colorbar midpoint value 
cbar=plt.colorbar()    # the mystery step ??????????? 
cbar.set_yticklabels([mn,md,mx]) # add the labels 
plt.show() 
+0

keneler Ben pydev ile eclipse kullanıyorum ve bazen sadece kodu python komut satırına yapıştırıyorum. Ne önerdiğinden tam olarak emin değilim, ama bakacağım, çünkü kulağa yararlı geliyor. – sequoia

+0

teşekkürler, gelecekte hangi yöntemlerin mevcut olduğunu görmek için iyi bir ipucu. – sequoia

cevap

19

Güncelleme kene ve kene etiketleri: çubuk boyunca beş kene

cbar.set_ticks([mn,md,mx]) 
cbar.set_ticklabels([mn,md,mx]) 
+0

Teşekkürler. Bu çalışıyor. – sequoia

+0

Neden mx' kenelerim, renk çubuğunda görüntülenmemesi gereken tek şeydir? Bu nasıl olabilir? – FaCoffee

5

Bir çalışma örneği (herhangi bir değer aralığı için): İşte

bazı örnek kodudur

m0=int(np.floor(field.min()))   # colorbar min value 
m4=int(np.ceil(field.max()))    # colorbar max value 
m1=int(1*(m4-m0)/4.0 + m0)    # colorbar mid value 1 
m2=int(2*(m4-m0)/4.0 + m0)    # colorbar mid value 2 
m3=int(3*(m4-m0)/4.0 + m0)    # colorbar mid value 3 
cbar.set_ticks([m0,m1,m2,m3,m4]) 
cbar.set_ticklabels([m0,m1,m2,m3,m4]) 
1

treenick de cevap başlatılmış var ama sizin Colorbar 0 ile 1 arasında ölçeklendirildiyse, bu kod arsa olmaz Eğer şöyle piton liste indeksleme yapabilirsiniz etiketleri aralıklı istediğiniz Eğer fields 0 arasındadır ölçekli değildir ve 1. Bunun yerine ben

m0=int(np.floor(field.min()))   # colorbar min value 
m4=int(np.ceil(field.max()))    # colorbar max value 
num_ticks = 10 
# to get ticks 
ticks = np.linspace(0, 1, num_ticks) 
# get labels 
labels = np.linspace(m0, m1, num_ticks) 

kullanılırsa keneler: diğer her atlama varsayarak

ticks = ticks[::2] 
labels = labels[::2]