在使用imshow
时,我的彩色Map一直存在问题;有些颜色似乎变成了黑色。我终于意识到,imshow
似乎默认情况下,归一化了我给予它的浮点值矩阵。
我本来希望像[[0,0.25],[0.5,0.75]]
这样的数组显示Map中相应的颜色,对应于这些绝对值,但0.75将被解释为1。在极端情况下,0.2的N × N阵列(例如)将仅产生一个大的黑色正方形,而不是任何期望0.2在颜色图中对应的颜色(可能是20%的灰色)。
有没有办法防止这种行为?当自定义彩色图有许多不连续性时,这是特别令人讨厌的;比例的微小变化可能导致所有颜色完全改变。
2条答案
按热度按时间gywdnpxw1#
只需指定
vmin=0, vmax=1
。默认情况下,
imshow
将数据规范化为其最小值和最大值。您可以使用vmin
和vmax
参数或norm
参数(如果您想要非线性缩放)来控制。举个简单的例子:
atmip9wb2#
您还可以在
imshow
调用后通过在图像上定义的Normalize
对象更新vmin
和vmax
。Normalize
对象定义了autoscale()
方法,可以更新vmin
和vmax
。clim()
也可以用于更新当前图像的vmin
/vmax
。另外,还可以通过Axes示例上的
images
属性访问图像,即im = plt.gca().images[0]
。