matplotlib imshow-默认颜色标准化

2024-04-30 01:11:27 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用imshow时,我的彩色地图一直有问题,有些颜色似乎刚变成黑色。我终于意识到imshow在默认情况下,似乎使我给出的浮点值矩阵正规化。

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

有办法防止这种行为吗?当定制的彩色地图有许多不连续的地方时,特别令人讨厌,一个小的比例变化可能会导致所有的颜色完全改变。


Tags: 颜色地方地图情况矩阵数组比例彩色
1条回答
网友
1楼 · 发布于 2024-04-30 01:11:27

只需指定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

相关问题 更多 >