My subplot results
My code
fig,ax = plt.subplots(rows,cols, figsize = [24,24])
plt.subplots_adjust(hspace=0, wspace=0)
for i in range(cols):
step
The ratio in figsize should be same as the ratio of rows and cols in plt.subplot(rows, cols, figsize)
. For example, if rows is 2 and cols is 4, then the ratio is 1/2, thus figsize being (15, 7.5)(same ratio) would be good.
Following code is an example.
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'])
You may either shrink the figure size in vertical direction, e.g.
fig,ax = plt.subplots(rows,cols, figsize = [24,12])
or you may keep the square figure size but put more margin around the subplots
plt.subplots_adjust(bottom=0.3, top=0.7, hspace=0)
You have used figsize=[24,24]
to make it a square image. subplots_adjust
then makes each ax[i,j]
to stick to the adjacent one. But ax.imshow()
does not fill each ax
. In your sample above, if the vertical size of the image were larger, it would have filled the area alloted to that axes, but by distorting the image. If you want to try that out, use the command ax[0,i].imshow(a[ind,:,:],cmap='gray', aspect='auto')
: the aspect='auto'
part will stretch your images to fill the axes.
If you want the image aspect ratio to not be distorted, then you have to edit your figsize
accordingly.