Cartopy使用EckertIII投影绘图时纬度标签无法显示问题咨询
问题根因
EckertIII属于伪圆柱投影,地图外轮廓为非矩形,Cartopy对这类投影的经纬网格标签有默认限制:
- 非矩形投影下,左右两侧的纬度标签默认关闭,仅在投影边界为垂直直线的类PlateCarree矩形投影下默认开启
- 配置中
ylocs包含-90°、90°两个极点坐标,这两个位置在EckertIII投影中是上下边界的端点,无有效标签放置位,会被渲染逻辑直接过滤 - 部分Cartopy版本中,非矩形投影下即使设置
draw_labels=True,不手动指定标签侧的开关也不会渲染纬度标签
修复方案
调整gridlines的配置参数即可,修改后的参考代码如下:
gl = ax.gridlines( xlocs=[-180, -120, -60, 0, 60, 120, 180], # 移除±90°极点位置,避免标签被过滤 ylocs=[-60, -30, 0, 30, 60], draw_labels=True, x_inline=False, y_inline=False, lw=0.5, linestyle='--', color='gray' ) # 显式开启左侧纬度标签 gl.left_labels = True # 按需开启/关闭右侧纬度标签 gl.right_labels = False # 关闭顶部冗余经度标签,避免遮挡 gl.top_labels = False gl.bottom_labels = True gl.rotate_labels = False
补充说明
- 若需要标注南北纬90°,不要将其加入
ylocs列表,直接通过ax.text在投影南北边界的中点手动添加即可,自动网格标签无法在极点位置正常渲染 - 如果出现侧边标签被画布边缘裁剪的情况,可在绘图代码末尾添加
plt.subplots_adjust(left=0.08, right=0.92)预留足够边距 - 该问题在所有非矩形轮廓的投影(包括Robinson、Mollweide、全系列Eckert投影)中均存在,处理方式完全一致
内容的提问来源于stack exchange,提问作者not a human
相关产品推荐
相关产品推荐

