在使用 imshow
时,我的颜色图一直存在问题,有些颜色似乎只是变黑了。我终于意识到 imshow
似乎默认情况下会标准化我给它的浮点值矩阵。
我希望像 [[0,0.25],[0.5,0.75]]
这样的数组来显示 map 中的适当颜色,对应于这些绝对值,但 0.75 将是解释为 1。在极端情况下,一个 0.2 的 N x N 数组(例如)只会产生一个大的黑色方 block ,而不是在颜色映射中期望 0.2 对应的任何东西(可能是 20% 的灰色) )。
有没有办法防止这种行为?当自定义颜色图有很多不连续性时尤其烦人,比例的微小变化可能会导致所有颜色完全改变。
最佳答案
只需指定 vmin=0, vmax=1
。
默认情况下,imshow
将数据标准化为最小值和最大值。您可以使用 vmin
和 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()
关于python - matplotlib imshow - 默认颜色归一化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22121239/