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

Python如何将三张图像绘制在同一画布实现分区展示的前后对比效果

实现方案说明

完全可以通过数组切片拼接、叠加绘制两种方式实现你要的分区可视化效果,两种方案的实现逻辑和适用场景如下:

方案1:数组切片后拼接

适合需要输出完整拼接后数组的场景,操作逻辑简单直观。
假设你有三个尺寸完全相同的二维数组arr1、arr2、arr3,尺寸均为H行 × W列,按横向三等分拼接的示例代码如下:

import numpy as np
import matplotlib.pyplot as plt

W = arr1.shape[1]
split_width = W // 3
# 分别取三个数组对应的分区切片
part1 = arr1[:, :split_width]
part2 = arr2[:, split_width:2*split_width]
part3 = arr3[:, 2*split_width:]
# 沿宽度方向拼接三个切片
combined_arr = np.concatenate([part1, part2, part3], axis=1)
# 直接可视化拼接后的数组即可
plt.imshow(combined_arr)
plt.show()

如果是纵向分区、或自定义不规则分区,只需要调整切片的索引范围即可,逻辑通用。如果处理的是RGB这类三维数组,只要保留最后一个通道维度,切片逻辑完全一致。

方案2:分区叠加绘制

适合不需要保留拼接后数组、仅需要输出可视化结果的场景,调整更灵活。
不用修改原始数组,直接在同一个绘图画布上指定每个数组的绘制区域即可,以matplotlib为例:

import matplotlib.pyplot as plt

H, W = arr1.shape
split_width = W // 3
fig, ax = plt.subplots()
# 依次绘制每个数组的对应区域,指定显示范围
ax.imshow(arr1, extent=(0, split_width, 0, H), clip_on=True)
ax.imshow(arr2, extent=(split_width, 2*split_width, 0, H), clip_on=True)
ax.imshow(arr3, extent=(2*split_width, W, 0, H), clip_on=True)
# 调整坐标轴范围保证显示完整
ax.set_xlim(0, W)
ax.set_ylim(0, H)
plt.show()

这种方案后续调整分区比例、给不同分区加独立样式/标注时,不用重新处理原始数组,直接修改绘制参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:36:03