Python 使用matplotlib子批次时是否减少行间距?

Python 使用matplotlib子批次时是否减少行间距?,python,matplotlib,Python,Matplotlib,我的子地块结果 我的代码 fig,ax = plt.subplots(rows,cols, figsize = [24,24]) plt.subplots_adjust(hspace=0, wspace=0) for i in range(cols): step = 6 ind = i*step ax[0,i].imshow(a[ind,:,:],cmap='gray') ax[0,i].axis('off') ax[1,i].imshow(b[in

我的子地块结果

我的代码

fig,ax = plt.subplots(rows,cols, figsize = [24,24])
plt.subplots_adjust(hspace=0, wspace=0)

for i in range(cols):
    step = 6
    ind = i*step
    ax[0,i].imshow(a[ind,:,:],cmap='gray')
    ax[0,i].axis('off')

    ax[1,i].imshow(b[ind,:,:],cmap='gray')
    ax[1,i].axis('off')

    ax[2,i].imshow(c[ind,:,:],cmap='gray')
    ax[2,i].axis('off')

然而,plt.subplot\u adjust(hspace=0,wspace=0)似乎根本不起作用。我注意到它迫使图形具有相等的x和y大小,您能帮我更正吗?

您使用了
figsize=[24,24]
使其成为方形图像<代码>子批次\u调整然后使每个
ax[i,j]
粘附到相邻批次。但是
ax.imshow()
不会填充每个
ax
。在上面的示例中,如果图像的垂直大小更大,它会填充分配给该轴的区域,但会扭曲图像。如果您想尝试,请使用命令
ax[0,i].imshow(a[ind,:,:],cmap='gray',aspect='auto')
:部分将拉伸图像以填充轴。
如果希望图像纵横比不失真,则必须相应地编辑图形大小。

您可以在垂直方向缩小图形大小,例如

fig,ax = plt.subplots(rows,cols, figsize = [24,12])
或者,您可以保持方形图形大小,但在子地块周围增加更多边距

plt.subplots_adjust(bottom=0.3, top=0.7, hspace=0)

figsize中的比率应与
plt.subplot(rows,cols,figsize)
中的行和列的比率相同。例如,如果行数为2,列数为4,则比率为1/2,因此figsize为(15,7.5)(相同比率)将是好的

下面的代码是一个示例

fig, ax = plt.subplots(2, 4, figsize=(15, 7.5))
for i in range(2):
    for j in range(4):
        img = cv2.cvtColor(cv2.imread(os.path.join('../input/deepfake486326facescleaned', train_df.loc[i*2+j, 'name_path'])), cv2.COLOR_BGR2RGB)
        ax[i][j].imshow(img)
        ax[i][j].set_title(train_df.loc[i*2+j, 'label'])

gridspec可能有助于或plt.tight_布局()