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_布局()