我使用matplotlib和GridSpec
在3x3子图中绘制9幅图像。
fig = plt.figure(figsize=(30,40))
fig.patch.set_facecolor('white')
gs1 = gridspec.GridSpec(3,3)
gs1.update(wspace=0.05, hspace=0.05)
ax1 = plt.subplot(gs1[0])
ax2 = plt.subplot(gs1[1])
ax3 = plt.subplot(gs1[2])
ax4 = plt.subplot(gs1[3])
ax5 = plt.subplot(gs1[4])
ax6 = plt.subplot(gs1[5])
ax7 = plt.subplot(gs1[6])
ax8 = plt.subplot(gs1[7])
ax9 = plt.subplot(gs1[8])
ax1.imshow(img1,cmap='gray')
ax2.imshow(img2,cmap='gray')
...
ax9.imshow(img9,cmap='gray')
然而,图像具有来自每一行的不同大小。例如,第一行图像大小为256x256,第二行中的图像大小为200x200,第三行的大小为128x128
我想在子图中绘制相同大小的图像。如何在Python中使用它?
这是4x3子图的示例
2条答案
按热度按时间2w2cym1i1#
不要使用
matplotlib.gridspec
,而是使用figure.add_subplot
,如下面的可运行代码所示。但是,在进行某些绘图时,您需要set_autoscale_on(False)
来抑制其大小调整行为。结果图:
vdzxcuhz2#
我假设您希望以不同的大小显示图像,这样不同图像的所有像素大小相同。
这通常是困难的,但是对于子图网格的行(或列)中的所有图像具有相同大小的情况,它变得容易。这个想法可以是使用gridspec的
height_ratios
(或width_ratios
在列的情况下)参数,并将其设置为图像的像素高度(宽度)。