使用imshow绘制热力图结果与输入数组数值不匹配问题求助
问题原因
- 颜色映射配置错误:你选用的
Wistia色系为黄到浅橙的渐变,完全不符合0(红色)到1(蓝色)的配色要求。 - 颜色映射范围未手动锁定:
imshow默认会以输入数据的最小值、最大值作为色阶的上下界,你的数据集数值范围仅为0.43~0.97,默认配置下会将0.43映射为色阶最小值、0.97映射为色阶最大值,无法实现0对应红、1对应蓝的效果。 - 可选坐标适配问题:
imshow默认原点在左上角,若你需要网格坐标原点对齐左下角,还需额外调整坐标参数。
修正方案
将绘图代码替换为以下内容即可:
import numpy as np # 转换数据格式 grid_list = np.array(grid_list) # 核心修改:指定红蓝色系、强制色阶范围0-1,origin参数可根据你的网格坐标习惯选择保留或删除 im = self.axes1.imshow(grid_list, cmap='RdBu_r', vmin=0, vmax=1, origin='lower') # 可选:添加颜色条验证数值与颜色的对应关系 self.axes1.figure.colorbar(im, ax=self.axes1)
参数说明
cmap='RdBu_r':选用红-蓝渐变色系,后缀_r表示反转色阶顺序,实现数值越低越红、数值越高越蓝的效果,匹配你的需求。vmin=0, vmax=1:强制锁定颜色映射的上下界为0和1,不受输入数据本身的数值范围影响,保证0始终对应红色、1始终对应蓝色。origin='lower':将热力图原点调整为左下角,符合常规网格坐标使用习惯,若你的数据按左上角为第一行存储,可删除该参数。
内容的提问来源于stack exchange,提问作者Khalid Owl Walid
相关产品推荐
相关产品推荐

