You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:45:39