You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Matplotlib内置颜色映射(colormap)设置固定取值边界?

固定Matplotlib颜色映射的取值边界

嘿,这个问题解决起来超简单!你只需要在imshow()函数里加上vmin和vmax两个参数,就能强制颜色映射始终使用固定的最大值和最小值,完全不受输入数据本身极值的影响。

核心原理

vmin指定颜色映射对应的最小值,vmax指定对应的最大值。不管你的frame数组实际的最大值是20还是100,Matplotlib都会把数据按这个固定范围映射到colormap上:

  • 小于等于vmin的数值会对应colormap的最暗端(比如inferno的最黑部分)
  • 大于等于vmax的数值会对应colormap的最亮端(比如inferno的最红部分)
  • 中间的数值会按比例映射到colormap的过渡色

修改后的代码示例

注意你原来的代码顺序有点小问题(应该先创建画布和轴,再绘制图像),调整后的完整代码如下:

import matplotlib.pyplot as plt

# 先创建画布和坐标轴
fig, ax = plt.subplots()
# 设置固定的颜色映射边界,这里以0-100为例,你可以根据需求修改数值
im = ax.imshow(frame, cmap='inferno', interpolation="bilinear", vmin=0, vmax=100)
# 添加颜色条
fig.colorbar(im, ax=ax)
# 显示图像
plt.show()

额外小技巧

如果你的数据存在超出vmin/vmax的数值,还可以在颜色条上添加截断标记,让读者知道有数据超出了显示范围:

# 在colorbar中添加extend参数,'both'表示上下都显示截断标记,也可以用'min'或'max'
fig.colorbar(im, ax=ax, extend='both')

另外,也可以用im.set_clim(vmin=0, vmax=100)的方式来设置边界,效果和直接在imshow()里加参数完全一致。

内容的提问来源于stack exchange,提问作者John N.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:35:02