使用 gridspec 并排绘制多个 Cartopy 地图?

Plotting multiple Cartopy maps side-by-side using gridspec?

目标是制作一个分割图,左边是一张大型正射地图,右边是十二个较小的 EqualEarth 投影。这最终将被动画化,填充数据等。目前,最小的例子如下:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

fig = plt.figure(figsize=(16,8), constrained_layout=True)
gs = fig.add_gridspec(1, 2)

ax0 = fig.add_subplot(gs[0,0])
ax0 = plt.axes(projection=ccrs.Orthographic())
ax0.coastlines(resolution='110m')

nrows = 4
ncols = 3

for i in range(nrows*ncols):
    ax1 = fig.add_subplot(nrows, ncols, i+1, projection=ccrs.EqualEarth())
    ax1.set_global()
    ax1.coastlines()

这会产生这样的结果:

首选结果如下所示:

我该如何实现?不一定非得用gridspec,如果有更好的办法

编辑:使用以下代码成功:

fig = plt.figure(figsize=(12, 5.5), constrained_layout=True)
gs0 = fig.add_gridspec(1, 2, width_ratios=[1, 2])

ax0 = fig.add_subplot(gs0[0], projection=ccrs.Orthographic())
ax0.coastlines()

gs01 = gs0[1].subgridspec(4, 3)

for a in range(4):
    for b in range(3):
        ax = fig.add_subplot(gs01[a, b], projection=ccrs.EqualEarth())

您基本上想要执行此处描述的操作: https://matplotlib.org/tutorials/intermediate/gridspec.html#gridspec-using-subplotspec

我没有费心去下载 cartopy,但你明白了...


fig = plt.figure(constrained_layout=True)
gs0 = fig.add_gridspec(1, 2, width_ratios=[1, 2])

ax0 = fig.add_subplot(gs0[0])

gs01 = gs0[1].subgridspec(4, 3)

for a in range(4):
    for b in range(3):
       ax = fig.add_subplot(gs01[a, b])