Skip to main content
 首页 » 编程设计

python之子图中的子图之两个 8x8 子图

2025年05月04日14yxwkf

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

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

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

看来我需要使用 gridspec,但我不知道如何使用 axes.flatten 网格规范axes.flatten 让我可以在一个图形上显示 64 张图像。

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

我不知道如何将下面的代码与 gridspec 结合起来创建 子图。

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() 

请您参考如下方法:

简而言之:你没有

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([]) 

请注意,如果您要绘制大量图像,axes_grid1 工具包可能会有用:

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