在 IPython notebook 中绘制几个子图

plot several subplots in IPython notebook

我有两组 8 张图像,每组都作为 numpy 数组给出。

因为我想在我的程序中的某个时刻使用for循环,我想在同一个单元格中将每个集合显示为matplotlib子图,不幸的是它不起作用(我尝试使用[=中的显示功能20=],完全没有成功)。

这是我使用的代码:

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

for i, img in enumerate(set1):
    plt.subplot(2, 4, i+1)
    plt.axis('off')
    plt.imshow(img)

for i, img in enumerate(set2):
    plt.subplot(2, 4, i+1)
    plt.axis('off')
    plt.imshow(img)

只显示第二组

发生的事情是您将所有内容都绘制在同一个图形上。因此,当绘制来自 set2 的图像时,您将覆盖来自 set1 的图像。您可以通过在 for 循环之前调用 plt.figure() 来创建一个新图形:

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

plt.figure()
for i, img in enumerate(set1):
    plt.subplot(2, 4, i+1)
    plt.axis('off')
    plt.imshow(img)

plt.figure()
for i, img in enumerate(set2):
    plt.subplot(2, 4, i+1)
    plt.axis('off')
    plt.imshow(img)