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

如何为Matplotlib imshow的两幅图表设置统一颜色取值范围?

统一Matplotlib imshow图表颜色取值范围的实现方法

要让两幅imshow图表使用统一的颜色映射(相同数值对应相同颜色),核心是为两个图表设置相同的颜色取值范围,可以通过以下步骤实现:

1. 确定全局数值范围

先计算两组数据的最小值(vmin)和最大值(vmax),确保这个范围覆盖两组数据的所有值。

2. 在imshow中指定vmin和vmax

调用imshow()时传入vmin和vmax参数,强制两个图表使用相同的颜色映射区间。

完整示例代码

import matplotlib.pyplot as plt
import numpy as np

# 定义两组数据集
data1 = np.array([[[7,7,7,7,7,7,7,7,7,7,7],[11,11,11,11,11,11,11,11,11,11,11],[15,15,15,15,15,15,15,15,15,15,15],[19,19,19,19,19,19,19,19,19,19,19],[23,23,23,23,23,23,23,23,23,23,23],[27,27,27,27,27,27,27,27,27,27,27],[31,31,31,31,31,31,31,31,31,31,31],[35,35,35,35,35,35,35,35,35,35,35],[39,39,39,39,39,39,39,39,39,39,39],[43,43,43,43,43,43,43,43,43,43,43],[47,47,47,47,47,47,47,47,47,47,47]]])
data2 = np.array([[[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42],[10,19,26,28,33,35,35,37,40,42,42]]])

# 计算全局最小、最大值
all_data = np.concatenate([data1, data2])
vmin = all_data.min()
vmax = all_data.max()

# 绘制第一幅图
fig1, ax1 = plt.subplots()
im1 = ax1.imshow(data1[0], vmin=vmin, vmax=vmax)
ax1.invert_yaxis()
ax1.set_title("bit shifting")
fig1.colorbar(im1)
fig1.tight_layout()

# 绘制第二幅图
fig2, ax2 = plt.subplots()
im2 = ax2.imshow(data2[0], vmin=vmin, vmax=vmax)
ax2.invert_yaxis()
ax2.set_title("另一组数据")
fig2.colorbar(im2)
fig2.tight_layout()

plt.show()

关键说明

  • np.concatenate([data1, data2]):合并两组数据,快速计算全局最小/最大值,确保颜色范围覆盖所有数据点。
  • vmin和vmax参数:强制imshow使用指定数值区间做颜色映射,两组图表共用这两个值后,相同数值会对应完全一致的颜色。
  • 添加colorbar:直观展示颜色与数值的对应关系,验证统一映射的效果。

如果数据来自文件,只需将data1和data2的定义替换为对应的文件读取逻辑即可,核心逻辑保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:06:23