如何使用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
相关产品推荐
相关产品推荐

