子图中的子图 - 两个8x8子图

时间:2017-10-24 04:26:27

标签: python matplotlib

我试图在两个子图中创建子图,以显示不同大小的图像。

主要人物将分为两个图 - 每个图都会 进一步划分为8x8子图。我不想要显示任何轴。

所以我将有两个子图,每个显示64个图像(64个子图)。

似乎我需要使用gridspec,但我不知道如何使用axes.flatten gridspec。 axes.flatten让我在一个图上显示64个图像。

fig, axes = plt.subplots(nrows=8, ncols=8,figsize = (12,6))

  for ax,image in zip(axes.flat,images):
            ax.axes.set_axis_off()
            ax.imshow(imread(image))
plt.show()

我不知道如何将下面的代码与gridspec相结合来创建 副区。

{{1}}

1 个答案:

答案 0 :(得分:5)

简而言之:你没有

pyplot.subplots是顶级功能,其主要目的是方便。

你需要做一点点,但不要太多,深入了解你想要的API。

from matplotlib import pyplot
from matplotlib import gridspec

fig = pyplot.figure(figsize=(24, 12))

gs0 = gridspec.GridSpec(1, 2)
gs00 = gridspec.GridSpecFromSubplotSpec(8, 8, subplot_spec=gs0[0])
gs01 = gridspec.GridSpecFromSubplotSpec(8, 8, subplot_spec=gs0[1])

for i in range(8):
    for j in range(8):
        ax00 = fig.add_subplot(gs00[i, j])
        ax00.text(0.5, 0.5, '0_{}_{}'.format(i, j), ha='center')
        ax00.set_xticks([])
        ax00.set_yticks([])

        ax01 = fig.add_subplot(gs01[i, j])
        ax01.text(0.5, 0.5, '1_{}_{}'.format(i, j), ha='center')
        ax01.set_xticks([])
        ax01.set_yticks([])

enter image description here

请注意,如果您正在绘制大量图像,则axes_grid1工具包可能很有用:

http://matplotlib.org/tutorials/toolkits/axes_grid.html#sphx-glr-tutorials-toolkits-axes-grid-py