我想創建一個輪廓,以便用戶可以指定一個輪廓範圍,以便他們可以專注於某個值範圍。根據數據的不同,用戶指定範圍之外會有值。我適應這個代碼來說明我的問題:Matplotlib顏色條擴展,顯示值
Python/Matplotlib - Colorbar Range and Display Values
此代碼重複值從0到2,但我已經設置了輪廓範圍「V」(0.1至1.5),因此,將有外的值輪廓,我使用擴展(extend = both)來擴展輪廓,使得超出範圍的值顯示爲顏色(以確保沒有白色區域)。我想要的是在等高線範圍外顯示輪廓範圍外的最大值(2)和最小值(-0.1),以便它們也出現在比例尺上,我該怎麼做?
在較少有另一種方式
import numpy as np
import matplotlib.pyplot as plt
xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.array([[0., 1.0, 2.0],[0., 1.0, 2.0],[-0.1, 1.0, 2.0]])
v = np.linspace(0.1, 1.5, 10, endpoint=True)#set so that there are values outside contour
plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet,extend='both')
cbar=plt.colorbar(ticks=v,extendrect='True')
plt.show()
我要的是數據和數據的最大值最小值顯示的擴展。
我修改了輪廓標籤的代碼,以包含輪廓的最小值,輪廓等級和輪廓的最大值。顏色條上沒有出現最小值和最大值(更新後的圖像)zi.min()爲-0.1,zi.max()爲2.
我調查了y-ticks: print cbar.ax.get_yticks ():生成值0到1 print cbar.ax.get_ylim():生成值-0.11和1.11(擴展條的末端)
如何獲取最小值和最大值以顯示?我可以使用yticks/ylim信息嗎?
import numpy as np
import matplotlib.pyplot as plt
xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.array([[0., 1.0, 2.0],
[0., 1.0, 2.0],
[-0.1, 1.0, 2.0]])
v = np.linspace(0.1, 1.5, 10, endpoint=True)#contour levels
plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet,extend='both')
cbarticks=np.hstack([zi.min(),v,zi.max()])#contour tick labels
cbar=plt.colorbar(ticks=cbarticks,extendrect='True',extendfrac='auto',spacing='proportional')
print cbar.ax.get_ylim()
print cbar.ax.get_yticks()#
plt.show()
謝謝您的建議抽動,但這不是我想要的。沒有辦法只編輯刻度標籤,以便輪廓標籤上顯示輪廓外的最大值和最小值。這是因爲我的程序允許用戶更改級別數量和輪廓範圍,以便他們可以在某個輪廓範圍內磨合,但我想顯示異常值 – Jay 2014-11-16 00:04:46
當您使用extend ='both'時,它將值擴展爲-inf和inf兩側。查看'print CS.cvalues'的輸出 – 2014-11-16 07:47:44