Python 3.x 如何显示与其相对大小相关的图像?

Python 3.x 如何显示与其相对大小相关的图像?,python-3.x,image,matplotlib,Python 3.x,Image,Matplotlib,存储在列表中的不同形状的图像显示如下: 是否可以显示图像并保留其相对大小?您可以共享轴,以便所有图像都以相同的比例显示 import numpy as np import matplotlib.pyplot as plt N = 25 f = lambda n,m: np.random.rand(n,m) g = lambda: f(np.random.randint(29,150), np.random.randint(29,150)) images = [g() for _ in ran

存储在列表中的不同形状的图像显示如下:


是否可以显示图像并保留其相对大小?

您可以共享轴,以便所有图像都以相同的比例显示

import numpy as np
import matplotlib.pyplot as plt

N = 25
f = lambda n,m: np.random.rand(n,m)
g = lambda: f(np.random.randint(29,150), np.random.randint(29,150))
images = [g() for _ in range(N)]

fig, axs = plt.subplots(5,5, sharex=True, sharey=True)

for image, ax in zip(images, axs.flat):
    ax.imshow(image, cmap="Greys")
    ax.set_title(image.shape, fontsize=8)
    ax.autoscale()

fig.tight_layout()
plt.show()

这当然可以通过多种方式实现,但需要一些技巧。就我个人而言,我会把所有的细胞图像放在一个轴上,用kwarg来改变它们的“范围”。你必须在所有的图像中循环一次,以确定每一列和每一行的宽度和高度,但这并不难。如果需要mxn轴,可以对轴位置执行相同的操作,但这需要更多的工作
import numpy as np
import matplotlib.pyplot as plt

N = 25
f = lambda n,m: np.random.rand(n,m)
g = lambda: f(np.random.randint(29,150), np.random.randint(29,150))
images = [g() for _ in range(N)]

fig, axs = plt.subplots(5,5, sharex=True, sharey=True)

for image, ax in zip(images, axs.flat):
    ax.imshow(image, cmap="Greys")
    ax.set_title(image.shape, fontsize=8)
    ax.autoscale()

fig.tight_layout()
plt.show()