当我想要绘制2个图表时,我通常会这样做:
f, (ax1, ax2) = plt.subplots(1, 2)
如果我有多个图像列表,并且想在每个列表上运行相同的功能,以便绘制该列表中的每个图像怎么办?每个列表具有不同数量的图像。
当我想要绘制2个图表时,我通常会这样做:
f, (ax1, ax2) = plt.subplots(1, 2)
如何处理:
num_subplots = len(listoffigs)
axs = []
for i in range(num_subplots):
axs.append(plt.subplot(num_subplots, 1, i+1))
甚至可以更简短,使用列表推导式:
num_subplots = len(listoffigs)
axs = [plt.subplot(num_subplots, 1, i+1) for i in range(num_subplots)]
*) 编辑:添加列表推导式解决方案
首先,拥有多个列表或一个长列表之间没有区别,因此将所有列表合并成一个。
biglist = list1 + list2 + list3
您可以通过列表长度确定所需的子图数量。在最简单的情况下,制作一个正方形网格,
n = int(np.ceil(np.sqrt(len(biglist))))
fig, axes = plt.subplots(n,n)
将您的图像填入网格中,
for i, image in enumerate(biglist):
axes.flatten()[i].imshow(image)
while i < n*n:
axes.flatten()[i].axis("off")
i += 1
axs [0]
将引用第一个子图。 - JohanL