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

如何在Python中对矩阵生成的Colormap进行归一化(轴范围0-3)?

将Colormap归一化到0-3范围的实现方案

你可以通过以下两种方式实现将Colormap的归一化范围固定为0到3:

方法一:直接固定颜色映射范围

这种方式会将所有数据映射到0-3区间,数据值超过3的会使用Colormap的最高色,低于0的使用最低色,适合需要强制颜色条范围的场景。

修改后的完整代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors

# 加载矩阵文件
p = np.loadtxt('matrix300.txt')

# 自定义Colormap
cmap = colors.ListedColormap(['yellow', 'white'], name='Gamma=1')

# 设置归一化范围为0到3
norm = colors.Normalize(vmin=0, vmax=3)

# 绘制图像并应用归一化规则
img = plt.imshow(p, interpolation='nearest', origin='lower', cmap=cmap, norm=norm)

# 添加匹配范围的颜色条
plt.colorbar(img)

plt.xlabel("h_0")
plt.ylabel("h")

plt.show()

方法二:先将数据线性缩放到0-3区间

如果需要让原数据的最小值对应0、最大值对应3,先对数据做线性缩放处理:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors

p = np.loadtxt('matrix300.txt')

# 线性缩放数据到0-3范围
p_scaled = (p - p.min()) / (p.max() - p.min()) * 3

cmap = colors.ListedColormap(['yellow', 'white'], name='Gamma=1')

# 绘制时可直接指定vmin/vmax确保颜色条范围
img = plt.imshow(p_scaled, interpolation='nearest', origin='lower', cmap=cmap, vmin=0, vmax=3)

plt.colorbar(img)
plt.xlabel("h_0")
plt.ylabel("h")

plt.show()

关键修改点说明

  • 移除了重复的matplotlib.colors导入,简化代码结构
  • 替换原BoundaryNorm为Normalize(vmin=0, vmax=3),实现连续的0-3范围归一化
  • 颜色条无需再手动指定边界,直接关联绘制的img对象即可自动匹配范围

内容的提问来源于stack exchange,提问作者user18624758

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:55:18