44

使用 时,我的颜色图一直存在问题imshow,有些颜色似乎只是变黑了。我终于意识到,imshow默认情况下,我给它的浮点值矩阵似乎是标准化的。

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

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

4

1 回答 1

75

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

默认情况下,imshow将数据标准化为其最小值和最大值。您可以使用vminandvmax参数或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()

在此处输入图像描述

于 2014-03-02T01:26:20.447 回答