使用subplot2grid时如何在matplotlib中向轴添加投影?

问题描述

我正在尝试使用 cartopy 在五个不同的子图中绘制五张地图。我想要做的是在上排绘制三张地图,在下排绘制剩余的两张地图,但将最后两个子图集中。我设法使用以下方法添加子图轴:

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = plt.subplot2grid((2,6),(0,0),colspan=2)
ax2 = plt.subplot2grid((2,2),colspan=2)
ax3 = plt.subplot2grid((2,4),colspan=2)
ax4 = plt.subplot2grid((2,(1,1),colspan=2)
ax5 = plt.subplot2grid((2,3),colspan=2)

但是,我找不到使用制图投影创建这些子图的方法。通常,对于偶数个子图,我会这样做:

import cartopy.crs as ccrs
fig,Ax = plt.subplots(nrows=2,ncols=3,subplot_kw=dict(projection=ccrs.PlateCarree()),constrained_layout=True)

但我不知道如何使用 subplot2grid 做到这一点。这是可能的,还是有另一种方法可以在 matplotlib 中创建跨越多行或多列的地图?

解决方法

subplot2grid 的文档 有

**kwargs  
     Additional keyword arguments are handed to add_subplot.

add_subplot 支持 projection= 关键字参数。因此

ax1 = plt.subplot2grid((2,6),(0,0),colspan=2,projection=ccrs.PlateCarree())

就是你所需要的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...