使用 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])
目标是制作一个分割图,左边是一张大型正射地图,右边是十二个较小的 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])