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

双图共享Colorbar及值域问题:不同值域时失效的解决咨询

问题解答

原代码确实不适用于两张图值域不同的通用场景——你最后将第二张图的im对象传给plt.colorbar(),色条自然只会匹配这张图的数值范围。

要让共享色条覆盖两张图的全部值域,可按以下步骤修改:

  • 先生成两张图的数据集,计算全局的最小值和最大值
  • 在两张图的imshow()中统一指定vmin和vmax参数,强制它们使用相同的数值区间
  • 最后基于任意一个图像对象创建共享色条即可

修改后的代码如下:

import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)

# 生成两张图的数据
data1 = np.random.uniform(low=0.00001, high=5, size=(100,100))
data2 = np.random.uniform(low=0.3, high=0.6, size=(100,100))

# 计算全局的最小值和最大值
vmin = min(data1.min(), data2.min())
vmax = max(data1.max(), data2.max())

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12,9))
# 统一指定vmin和vmax,确保两张图用同一颜色映射区间
im1 = ax1.imshow(data1, vmin=vmin, vmax=vmax)
im2 = ax2.imshow(data2, vmin=vmin, vmax=vmax)

# 基于任意一个图像对象创建共享色条
plt.colorbar(im1, ax=[ax1, ax2], aspect=40)
plt.show()

修改后,色条范围会覆盖两张图数据的全部值域,两张图的颜色映射也会基于这个全局区间统一显示,保证数据对比的一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:20:39