Matplotlib imshow - 更改默认颜色标准化

2024-01-08

我在使用时一直遇到颜色图问题imshow;有些颜色似乎就变成了黑色。我终于意识到imshow默认情况下,似乎对我给出的浮点值矩阵进行标准化。

我本来期望一个数组,例如[[0,0.25],[0.5,0.75]]显示地图中对应于这些绝对值的适当颜色,但 0.75 将被解释为 1。在极端情况下,0.2 的 N x N 数组(例如)只会产生一个大黑色方块,而不是比颜色图中对应的 0.2 的值要高(可能是 20% 的灰色)。

有没有办法阻止这种行为?当自定义颜色贴图有许多不连续性时,这尤其令人烦恼;比例的微小变化可能会导致所有颜色完全改变。


只需指定vmin=0, vmax=1.

默认情况下,imshow将数据标准化为其最小值和最大值。您可以使用以下任一方式控制它:vmin and vmax参数或与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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib imshow - 更改默认颜色标准化 的相关文章

随机推荐