在子图之间零空间时自动设置图形大小(使用subplots_adjust)

时间:2016-04-06 01:03:06

标签: python matplotlib matplotlib-basemap

我正在寻找关于如何在子图之间没有水平和垂直空间的情况下编写子图图形的建议。我希望自动选择输出图形的大小,以便保存子图,图形之间没有空格,我希望能够调整输出图形的整体相对大小,保持纵横比相同。目前我必须猜测输出宽高比并将其设置为fig.set_size_inches(),这将起作用。

我遇到的困难是,如果我调整数字,我必须重新猜测'输出大小需要什么才能输出图形,子图之间没有空格。

提前感谢您的帮助。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

# Change color of points on each subplot
cols = ['r', 'b', 'g', 'y']

fig, axes = plt.subplots(2, 2)

for i in range(2):
    for j in range(2):

        map = Basemap(projection='merc', lat_0 = 57, lon_0 = -135,
            resolution = 'i', area_thresh = 0.1,
            llcrnrlon=-136.25, llcrnrlat=56.0,
            urcrnrlon=-134.25, urcrnrlat=57.75, 
            ax = axes[i,j])

        map.drawcoastlines(zorder = 0)
        map.drawcountries(zorder = 0)
        map.fillcontinents(color = 'lightgray', zorder = 0)
        map.drawmapboundary(zorder = 0)

        lons = [-135.3918, -134.8331, -134.6572]
        lats = [57.0799, 57.0894, 56.2399]
        x,y = map(lons, lats)

        color = cols[2*i+j]

        pts = map.scatter(x, y, c = color, marker = 'o', s = 400, 
            alpha = 1.0, zorder = 1)

plt.subplots_adjust(left=0.01, bottom=0.01, right = 0.99, top = 0.99,\
    wspace=0.0, hspace=0.0)

outfile = "test_fig.png"
plt.savefig(outfile, dpi = 300)
plt.close()

如果我没有设置所需的输出数字大小但是使用subplots_adjust要求子图之间的空间为零,那么我就可以使用上面的代码。

figure 1

现在,如果我设置了合适的数字大小(通过猜测),我可以删除子图之间的空格(在subplots_adjust调用之前添加以下内容):

fig.set_size_inches(5, 8)

enter image description here

困难在于我必须通过猜测找到宽度与高度的比率。有没有办法自动化这个过程?

0 个答案:

没有答案