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
将数据标准化为其最小值和最大值。您可以使用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()
【讨论】:
我的人生圆满了!这困扰我太久了。希望这对其他人有帮助。 确实如此。我一直在寻找地狱的www。弄清楚 imshow 的行为。 @DeeWBee 是的。来自docs:除了fignum,关键字参数传递给imshow() 实际上,“vmin 和 vmax 不会对数据进行规范化,它们会对其进行钳制”。这是在评论here中给出的。colorbar
这就是我要找的东西:D以上是关于matplotlib imshow - 默认颜色归一化的主要内容,如果未能解决你的问题,请参考以下文章
Matplotlib:quiver 和 imshow 叠加,如何设置两个颜色条?