Обычно использование plt.subplots_adjust(wspace=0, hspace=0)
приведет к сворачиванию всех осей друг на друга.Проблема, с которой вы сталкиваетесь, заключается в том, что использование imshow
фиксирует соотношение сторон осей на графике.
Чтобы компенсировать это, вам нужно отрегулировать размер холста так, чтобы кадр имел такое же соотношение, как и изображения, которые вы показываете.Следующая проблема заключается в том, что заполнение границ вокруг осей является отношением размера изображения.Если вы согласны с этим, вы можете удалить границу, добавить изображения, а затем отрегулировать высоту холста так, чтобы высота фигуры умножалась на отношение изображений к числу строк изображений, деленное на количество столбцовimages.
Вот пример:
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_figheight
:

А вот и с настройкой:
