卡托平面方位等距投影:放大区域和海岸线



我正在尝试使用卡托皮在方位等距投影上绘制一些数据。但是,它给了我几个问题。首先,对于这种类型的投影,海岸线不再显示。不确定这是我的代码还是卡托皮问题。我还注意到,如果我使用 ccrs。海岸线确实显示的 pcolormesh 命令中的 PlateCarree(( 变换,但大概,我的数据在错误的预测类型上?

其次,我更喜欢如果轴边界在绘制数据后是圆形的,是否可以使用set_extent或类似的函数来执行此操作? 下面的代码应该重现问题,圆圈显示了我希望边界看起来的样子。

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import matplotlib.patches as mpatches
clat = 55.0
clon = -8.0
lons = np.arange(clon-15,clon+16,0.5)
lats = np.arange(clat-15,clat+16,0.5)
d = np.random.rand(lons.shape[0],lats.shape[0])
trans = ccrs.AzimuthalEquidistant(central_latitude=clat, central_longitude=clon)
ax = plt.axes(projection=trans)
ax.coastlines(resolution='10m')
CB=ax.pcolormesh(lons-0.25, lats-0.25, d.T, 
cmap=plt.cm.viridis, alpha=0.5,
transform=trans)#ccrs.PlateCarree())
p1 = mpatches.Circle((clon,clat), radius=15, color='k', lw=5, fill=False,
transform=trans)
ax.add_patch(p1)

如果您要绘制的数据位于纬度/经度坐标中,则transform关键字的正确值确实是ccrs.PlateCarree()。这是新用户的常见问题。transform参数告诉 cartopy 您的数据所在的坐标,并且完全独立于您要绘制的projection

要使绘图循环,您需要自己设置边界。Cartopy 文档有几个示例:http://scitools.org.uk/cartopy/docs/latest/examples/always_circular_stereo.html 和 http://scitools.org.uk/cartopy/docs/latest/examples/star_shaped_boundary.html。

最新更新