如何在Cartopy投影中调整南极点位置以居中显示古南极洲?
解决方案:调整投影中心至古南极点
要把3800万年前的南极洲放到地图中心,核心是把古南极点的经纬度设为投影的中心/极点。以下是具体实现:
1. 先确定古南极点的经度
3800万年前(渐新世早期)的南极点大致位于东经100°-120°区间(你可以根据自己使用的古地理重建模型,比如GPlates、PALEOMAP等,获取精确的经度值)。下面示例用110°E作为古南极点经度。
2. 两种适合的投影方案
方案一:继续使用正射投影(Orthographic)
只需要修改central_longitude参数为古南极点经度即可,代码调整如下:
import numpy as np import matplotlib.pyplot as plt import cartopy.crs as ccrs import cartopy.mpl.path as mpath # 定义地图圆形边界(保留原代码) theta = np.linspace(0, 2*np.pi, 100) center, radius = [0.5, 0.5], 0.5 verts = np.vstack([np.sin(theta), np.cos(theta)]).T circle = mpath.Path(verts*radius + center) # 绘图部分:修改投影中心经度为古南极点经度 fig = plt.figure(figsize=(12,5)) # 这里把central_longitude改成古南极点的经度,比如110°E ax1 = fig.add_subplot(111, projection=ccrs.Orthographic(central_longitude=110, central_latitude=-90)) # 调整范围,确保古南极洲在视野内(可以根据数据调整纬度范围) ax1.set_extent([0, 360, -90, -57], ccrs.PlateCarree()) ax1.set_boundary(circle, transform=ax1.transAxes) # 绘制等值线(保留原代码) MI.plot.contourf(ax=ax1, transform=ccrs.PlateCarree(), cmap="Reds", levels=11, cbar_kwargs={"label": "monsoonal index [-]"}) plt.show()
方案二:使用南极立体投影(SouthPolarStereo)
这个投影更适合展示极地区域的细节,同样调整中心经度:
import numpy as np import matplotlib.pyplot as plt import cartopy.crs as ccrs import cartopy.mpl.path as mpath # 定义地图圆形边界(保留原代码) theta = np.linspace(0, 2*np.pi, 100) center, radius = [0.5, 0.5], 0.5 verts = np.vstack([np.sin(theta), np.cos(theta)]).T circle = mpath.Path(verts*radius + center) # 绘图部分:使用南极立体投影,设置中心经度为古南极点经度 fig = plt.figure(figsize=(12,5)) ax1 = fig.add_subplot(111, projection=ccrs.SouthPolarStereo(central_longitude=110)) # 立体投影下可以直接用set_extent的极地范围,或者保留原范围 ax1.set_extent([0, 360, -90, -57], ccrs.PlateCarree()) ax1.set_boundary(circle, transform=ax1.transAxes) # 绘制等值线(保留原代码) MI.plot.contourf(ax=ax1, transform=ccrs.PlateCarree(), cmap="Reds", levels=11, cbar_kwargs={"label": "monsoonal index [-]"}) plt.show()
关键说明
- 核心是
central_longitude参数:把它设置为你古地理数据中南极点的经度,就能让古南极洲自动居中。 - 如果你的古南极点纬度不是严格的-90°(极少数情况),可以同时调整
central_latitude参数,但绝大多数古地理模型中南极点纬度还是-90°。 - 若等值线显示位置还是不对,要确保你的古地理数据是基于现代经纬度坐标系存储的,或者已经正确转换到对应参考系。
内容的提问来源于stack exchange,提问作者DennVer
相关产品推荐
相关产品推荐

