Python 概率网格matplotlib

Python 概率网格matplotlib,python,numpy,matplotlib,Python,Numpy,Matplotlib,我想获得带有映射到颜色的值的网格。它应该像一个概率分布,其中1.0对应于黑色,0.0对应于白色,灰色介于两者之间。在阅读答案时,我会针对我的案例进行尝试: 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.Linear

我想获得带有映射到颜色的值的网格。它应该像一个概率分布,其中1.0对应于黑色,0.0对应于白色,灰色介于两者之间。在阅读答案时,我会针对我的案例进行尝试:

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()
我看到了这个问题,因为线性映射将2D数组中的最大值视为黑色。但数组不一定包含值1.0


如何设置0.0和1.0的硬边界,并在两者之间平滑过渡?

使用以下参数的
vmin
vmax
参数:


您可能希望使用scikit learns对数据进行预处理(=缩放到[0,1])。谢谢,但它无法完成此任务。我想检查数据的[0,1]值,而不是将它们映射到该区间。哇,不错,在本例中,我没有想到imshow的那些参数。谢谢
img = pyplot.imshow(zvals, interpolation='nearest', cmap=cmap, vmin=0, vmax=1)