如何在Matplotlib中提取imshow显示矩阵时自动生成的RGB值?
获取Matplotlib imshow显示矩阵的RGB值的最优方法
当然有更高效的实现方式!不需要通过保存图片再读取的IO操作,直接利用Matplotlib内置的颜色映射(colormap)和归一化(Normalize)逻辑,就能精准计算出和imshow显示完全一致的RGB值。
具体实现步骤
- 定义数值的归一化范围(和你调用
imshow时的vmin、vmax保持一致) - 获取对应的颜色映射(默认或你指定的colormap)
- 直接将矩阵数值转换为RGB值
代码示例
import matplotlib.pyplot as plt from matplotlib.cm import get_cmap from matplotlib.colors import Normalize import numpy as np # 示例7×7矩阵(替换成你的correlation矩阵) correlation = np.random.uniform(-1, 1, (7, 7)) # 1. 初始化归一化对象,匹配imshow的vmin和vmax norm = Normalize(vmin=-1, vmax=1) # 2. 获取颜色映射:用默认的就取plt.rcParams['image.cmap'],也可以指定比如'coolwarm' cmap = get_cmap(plt.rcParams['image.cmap']) # 3. 转换数值为RGB:先归一化到[0,1],再通过cmap得到RGBA,取前3维就是RGB rgb_colors = cmap(norm(correlation))[:, :, :3] # 如果需要0-255的整数格式RGB,执行下面一行 rgb_colors_255 = (rgb_colors * 255).astype(np.uint8)
优势说明
- 完全在内存中计算,没有磁盘IO操作,速度更快
- 颜色精度100%匹配
imshow的显示效果,不会因为图片保存的压缩、格式转换损失信息 - 灵活适配你指定的任何colormap和归一化参数
内容的提问来源于stack exchange,提问作者Anna Jacobsen
相关产品推荐
相关产品推荐

