2011-07-16 20 views
11

स्टैक ओवरफ़्लो पर कई matplotlib colorbar प्रश्न हैं, लेकिन मैं अपनी समस्या को हल करने के लिए उन्हें समझ नहीं सकता।Matplotlib Colorbar Ticks को जोड़ने के लिए कैसे करें

मैं कलरबार पर yticklabels कैसे सेट करूं?

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

मैं पाइडेव के साथ ग्रहण का उपयोग कर रहा हूं और कभी-कभी मैं कोड को पायथन कमांड लाइन में पेस्ट करता हूं। मुझे बिल्कुल यकीन नहीं है कि आप क्या सुझाव दे रहे हैं, लेकिन मैं देखता हूं क्योंकि यह सहायक लगता है। – sequoia

+0

धन्यवाद, भविष्य में कौन सी विधियां उपलब्ध हैं, यह देखने के लिए एक अच्छी युक्ति है। – sequoia

उत्तर

19

अद्यतन टिक और टिक लेबल:

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

धन्यवाद। यह काम। – sequoia

+0

मेरी 'एमएक्स' टिक्स केवल रंगीन रंग में कल्पना नहीं की जा सकती है? ये केसे हो सकता हे? – FaCoffee

5

एक काम कर उदाहरण (किसी भी कीमत रेंज के लिए) पट्टी के साथ पाँच टिक के साथ है:

यहाँ कुछ उदाहरण कोड है

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

ट्रीनिक उत्तर ने मुझे शुरू किया लेकिन यदि आपकी कलरबार 0 और 1 के बीच स्केल की गई है, तो वह कोड प्लॉट नहीं करेगा यदि आपका fields 0 के बीच स्केल नहीं किया गया और 1. बजाय मैं

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) 

इस्तेमाल किया तुम बाहर लेबल आप की तरह तो अजगर सूची अनुक्रमण कर सकते हैं दूरी पर चाहते हैं टिक्स: हर दूसरे लंघन संभालने टिक्स

ticks = ticks[::2] 
labels = labels[::2] 
संबंधित मुद्दे