2016-07-25 94 views
1

我想獲取網格的值映射到顏色。它應該像概率分佈一樣,其中1.0對應於黑色,0.0對應白色,灰色之間。閱讀答案here我試一下我的情況:概率網格matplotlib

from matplotlib import mpl,pyplot 
import numpy as np 

zvals = np.zeros((10,5)) 
zvals[5,1] = 0.5 
zvals[5,2] = 0.3 
zvals[5,3] = 0.7 
zvals[5,4] = 5.8 

cmap = mpl.colors.LinearSegmentedColormap.from_list('my_colormap',['white','black'],256) 

img = pyplot.imshow(zvals,interpolation='nearest', cmap = cmap) 

pyplot.colorbar(img,cmap=cmap) 
pyplot.show() 

我看這個問題,因爲線性映射從二維數組爲黑色對待最大值。但數組不一定包含值1.0。

如何設置0.0和1.0的硬邊界,平滑過渡?

+0

您migh要使用scikit-學習[MinMaxScaler](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing .MinMaxScaler.html)來預處理您的數據(=縮放到[0,1])。 – sascha

+0

謝謝,但它沒有做到這一點。我想檢查數據的[0,1]值,而不是將它們映射到該間隔中。 – beginh

回答

3

使用vminvmax參數的imshow

img = pyplot.imshow(zvals, interpolation='nearest', cmap=cmap, vmin=0, vmax=1) 
+0

哇,不錯,我沒有想到這種情況下imshow的參數。謝謝! – beginh