Python 在matplotlib中删除图像行之间的垂直空白时出现的问题

Python 在matplotlib中删除图像行之间的垂直空白时出现的问题,python,matplotlib,Python,Matplotlib,我正在用pyplot显示2D数组中的图像,并且已经删除了轴标记和填充。然而,在图像行之间,仍然有空白,我想删除。图像本身没有空白 fig = plt.figure(figsize=(10, 10)) for x in range(quads_x): for y in range(quads_y): # ADD IMAGES fig.add_subplot(quads_y, quads_x, (quads_x * x) + y + 1) p

我正在用pyplot显示2D数组中的图像,并且已经删除了轴标记和填充。然而,在图像行之间,仍然有空白,我想删除。图像本身没有空白

fig = plt.figure(figsize=(10, 10))

for x in range(quads_x):
    for y in range(quads_y):
        # ADD IMAGES
        fig.add_subplot(quads_y, quads_x, (quads_x * x) + y + 1)
        plt.imshow(cv2.imread("./map/" + winning_maps[x][y], 0))

        # PYPLOT FORMATTING
        plt.subplots_adjust(wspace=0, hspace=0)
        ax = plt.gca()
        ax.axis("off")
        ax.xaxis.set_major_locator(matplotlib.ticker.NullLocator())
        ax.yaxis.set_major_locator(matplotlib.ticker.NullLocator())
代码会产生如下结果


关于我应该如何处理这个问题有什么想法吗?

通常使用
plt。子地块调整(wspace=0,hspace=0)
会将所有轴折叠在一起。您遇到的问题是,使用
imshow
修复了绘图中轴的纵横比

为了进行补偿,您需要调整画布的大小,以便帧与正在显示的图像具有相同的比率。下一个问题是围绕轴的边界填充是图像大小的比率。如果可以,可以删除边框,放入图像,然后将画布高度调整为图形高度乘以图像比率乘以图像行数除以图像列数

以下是一个例子:

from matplotlib import pyplot as plt
from PIL import Image

img = Image.open('fox.jpg').resize(80,50)

fig, axes = plt.subplots(rows, columns, figsize=(7,7))
for ax in axes.ravel():
    ax.imshow(img)
    ax.set_autoscale_on(False)
    ax.axis('off')
plt.subplots_adjust(hspace=0, wspace=0, left=0, bottom=0, right=1, top=1)
r, c = axes.shape
fig.set_figheight(fig.get_figwidth() * ax.get_data_ratio() * r / c )
plt.show()
这是使用
set\u figheight
之前的图像:

下面是调整:


为什么你不把图像加入到一个大的数组中——一个级联的图像——并且只绘制这一个图像?你会考虑把所有的图像连在一起成为一个有效的解决方案吗?像
hspace=-.1