使用plt.subplot2grid()时

时间:2017-04-18 23:30:07

标签: python matplotlib matplotlib-basemap subplot

我想在一张图中绘制5张地图。我希望它们像

一样布局
1 2 3
 4 5

要做到这一点,我试着按照这里给出的答案: Position 5 subplots in Matplotlib

这给了我正确的布局,但是在子图之间留下了大量的空白空间。

#S,W,N,E Bounds
lonMin = 119
lonMax = 124
latMin = 12
latMax = 19

m = Basemap(llcrnrlon=lonMin,llcrnrlat=latMin,urcrnrlon=lonMax,urcrnrlat=latMax, projection = 'cea', resolution = 'i')

fig = plt.figure()
axes = [plt.subplot2grid(shape=(2,6), loc=(0,0), colspan=2),
        plt.subplot2grid((2,6), (0,2), colspan=2),
        plt.subplot2grid((2,6), (0,4), colspan=2),
        plt.subplot2grid((2,6), (1,1), colspan=2),
        plt.subplot2grid((2,6), (1,3), colspan=2)]
for i in range(5):
    m.ax = axes[i]
    m.drawcoastlines()
fig.suptitle('Title', fontsize = 20, fontweight = 'bold')

enter image description here

如何减少子图之间的间距?

编辑: 这个问题似乎与将Basemaps放入情节有关。如果我注释掉m.drawcoastlines()调用,则轴看起来像这样,这很好: enter image description here

1 个答案:

答案 0 :(得分:0)

首先,您可以尝试调用plt.tight_layout()来调整子图之间的间距,以最大限度地减少重叠。

另一种方法是使用subplots_adjust手动设置所有空格,如

fig.subplots_adjust(hspace=.1) # height spaces
fig.subplots_adjust(wspace=.1) # width spaces

这些功能会影响所有子图。如果需要更多控制,请使用GridSpec。