matplotlib imshow - 默认颜色归一化

Posted

技术标签:

【中文标题】matplotlib imshow - 默认颜色归一化【英文标题】:matplotlib imshow - default colour normalisation 【发布时间】:2014-04-02 23:52:07 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

我的人生圆满了!这困扰我太久了。希望这对其他人有帮助。 确实如此。我一直在寻找地狱的www。弄清楚 imshow 的行为。 @DeeWBee 是的。来自docs:除了fignum,关键字参数传递给imshow() 实际上,“vmin 和 vmax 不会对数据进行规范化,它们会对其进行钳制”。这是在评论here中给出的。 colorbar 这就是我要找的东西:D

以上是关于matplotlib imshow - 默认颜色归一化的主要内容,如果未能解决你的问题,请参考以下文章

Python matplotlib imshow

matplotlib中的imshow()

matplotlib imshow扭曲颜色[重复]

Matplotlib:quiver 和 imshow 叠加,如何设置两个颜色条?

设置两个 matplotlib imshow 图具有相同的颜色地图比例

同一个 imshow matplotlib 中的两个不同颜色的颜色图