2016-02-27 77 views
2

在下面的簡單的代碼:加入蜱matplotlib彩條

dat = np.linspace(0.1,0.9,4)*np.ones((4,1)) 
fig, ax = plt.subplots() 
cax = ax.imshow(dat, interpolation='none') 
cbar = fig.colorbar(cax) 
plt.show() 

其給出:

enter image description here

我想要的顏色條具有範圍[0,1]。

dat = np.linspace(0.1,0.9,4)*np.ones((4,1)) 
fig, ax = plt.subplots() 
cax = ax.imshow(dat, interpolation='none') 
cbar = fig.colorbar(cax) 
cbar.set_clim(0, 1) 
cbar.set_ticks(np.linspace(0,1,11)) 
plt.show() 

導致:

enter image description here

顯然的範圍內變化的顏色已經變得更輕,但蜱蟲並沒有改變,即cbar.set_ticks()沒有這可以通過完成按預期執行。我怎樣才能改變刻度線?

回答

2

我不知道爲什麼顏色條不調整,但是你可以通過改變你的電話達到你想要什麼imshow像這樣

dat = np.linspace(0.1, 0.9, 4) * np.ones((4,1)) 
fig, ax = plt.subplots() 
cax = ax.imshow(dat, interpolation='none', vmin=0, vmax=1) 
cbar = fig.colorbar(cax) 
plt.show() 

注意額外vminvmax參數。

+0

ahh這比單獨調用'cbar.set_clim()'和'cbar.set_ticks()',thx ... – nluigi

+0

要容易得多,以便在顏色可更改上的限制發生變化時更新顏色條... – tacaswell

+0

在OP中,似乎要求是(1)能夠調整色條的範圍和(2)能夠調整色條內的刻度。雖然這個答案解決了要求(1),但是我們也可以通過包含來自OP的「cbar.set_ticks」來完成要求(2)。另外,'vmax = 0'是否需要更改爲'vmax = 1'以匹配OP? –