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

如何使用Matplotlib的plt.imshow叠加/合并两张图像(含白色背景)

解决Matplotlib仅显示单张图并结合双图的问题

问题分析

你的代码在同一个绘图轴上连续调用imshow,后绘制的图像会覆盖之前的,导致最终仅显示单张图。要结合两张图并保留第一张的白色背景,可按以下两种方式处理:


方式1:并排显示两张图(各自独立)

通过子图将两张图放在同一画布的不同区域,各自保留样式:

import matplotlib.pyplot as plt

# 配置颜色映射,确保低于vmin的像素显示白色
cm = plt.cm.RdBu_r
cm.set_under('white')

# 创建1行2列的子图布局
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5))

# 绘制第一张图,保留白色背景设置
img1 = ax1.imshow(ing_frame, cmap=cm, vmin=12)
ax1.set_title('第一张图像')
fig.colorbar(img1, ax=ax1)  # 添加颜色条

# 绘制第二张图
img2 = ax2.imshow(in_frame)
ax2.set_title('第二张图像')
fig.colorbar(img2, ax=ax2)

plt.tight_layout()  # 自动调整子图间距
plt.show()

方式2:叠加显示两张图(同尺寸时适用)

如果两张图尺寸相同,可将第二张图半透明叠加在第一张图上,同时保留白色背景:

import matplotlib.pyplot as plt

cm = plt.cm.RdBu_r
cm.set_under('white')

fig, ax = plt.subplots()

# 先绘制第一张图,保留白色背景
img1 = ax.imshow(ing_frame, cmap=cm, vmin=12)
# 叠加第二张图,设置alpha参数控制透明度(0-1之间)
img2 = ax.imshow(in_frame, alpha=0.5)

ax.set_title('叠加后的图像')
fig.colorbar(img1, ax=ax)
plt.show()

关键注意点

  • 保留白色背景的核心是不要移除cm.set_under('white')和vmin=12的设置,这会让ing_frame中数值低于12的像素显示为白色。
  • 避免图像覆盖的核心是不同图像绘制在独立的子轴上,或叠加时设置透明度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:52:38