matplotlib imshow - 默认颜色标准化

时间:2014-03-01 22:28:48

标签: python matplotlib normalization imshow

使用imshow时,我的色彩映射一直存在问题,有些颜色似乎变黑了。我终于意识到imshow似乎默认情况下将我给它的浮点值矩阵规范化。

我希望像[[0,0.25],[0.5,0.75]]这样的数组能够显示地图中的相应颜色,对应于那些绝对值,但0.75将被解释为1.在极端情况下,N x N数组0.2(例如),只会产生一个大的黑色正方形,而不是人们所期望的颜色图中的0.2对应(可能是20%灰色)。

有没有办法防止这种行为?当自定义颜色贴图有许多不连续性时,特别令人讨厌,缩小的小变化可能导致所有颜色完全改变。

1 个答案:

答案 0 :(得分:46)

只需指定vmin=0, vmax=1

默认情况下,imshow将数据规范化为最小值和最大值。您可以使用vminvmax参数或norm参数(如果您想要非线性缩放)来控制它。

作为一个简单的例子:

import matplotlib.pyplot as plt

data = [[0, 0.25], [0.5, 0.75]]

fig, ax = plt.subplots()
im = ax.imshow(data, cmap=plt.get_cmap('hot'), interpolation='nearest',
               vmin=0, vmax=1)
fig.colorbar(im)
plt.show()

enter image description here