2010-06-14 589 views
2

我正在使用帶自定義顏色映射的pcolor來繪製值矩陣。我設置了我的顏色映射圖,以便低值爲白色,高值爲紅色,如下所示。我所有的矩陣都具有0到20之間的值(包括0和20),我希望20總是純紅色,0總是純白色,即使矩陣的值不能覆蓋整個範圍。例如,如果我的矩陣只有2到7之間的值,我不希望它將2繪製爲白色,7繪製爲紅色,而是將其着色,就好像範圍仍然是0至20。我該怎麼做?我嘗試使用colorbar的「ticks =」選項,但它不起作用。如何在python matplotlib中爲pcolor設置固定的顏色條?

這裏是我當前的代碼(假設「my_matrix」包含要繪製的值):

cdict = {'red': ((0.0, 1.0, 1.0), 
     (0.5, 1.0, 1.0), 
     (1.0, 1.0, 1.0)), 
    'green': ((0.0, 1.0, 1.0), 
      (0.5, 1.0, 1.0), 
      (1.0, 0.0, 0.0)), 
    'blue': ((0.0, 1.0, 1.0), 
      (0.5, 1.0, 1.0), 
      (1.0, 0.0, 0.0))} 
my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap', cdict, 256) 
colored_matrix = plt.pcolor(my_matrix, cmap=my_cmap) 
plt.colorbar(colored_matrix, ticks=[0, 5, 10, 15, 20]) 

任何想法我怎麼能解決這個問題,以獲得正確的結果呢?非常感謝。

回答

2

猜測:你的色彩地圖可能是好的。繪圖時,嘗試調整vminvmax

pylab.imshow(im, vmin=0, vmax=20)