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

使用Cartopy的ccrs.Mercator()绘制contourf时图像空白的问题咨询

使用Cartopy的ccrs.Mercator()绘制contourf时图像空白的问题咨询

你好,我仔细看了你的代码和遇到的问题,这个空白现象其实是Cartopy里投影参数匹配错误导致的,咱们来理清楚问题所在:

问题根源

你在contourf函数里指定了transform=ccrs.Mercator(),但这里犯了一个Cartopy新手常踩的坑:

  • projection=ccrs.Mercator()是你给绘图轴(ax1)设置的目标显示坐标系,也就是最终图要呈现的投影方式;
  • 而transform参数需要指定的是你的原始数据(lon、lat)所在的坐标系。你的数据是经纬度格式,对应的是ccrs.PlateCarree()(也就是地理坐标系),不是Mercator投影坐标。

当你错误地把transform设为Mercator时,Cartopy会把你的经纬度值当成Mercator投影下的平面坐标来处理,这完全不符合数据的实际含义,导致绘制的图形被放到了可视范围之外,所以看起来就是空白的。而换成PlateCarree作为transform时,数据坐标系和参数匹配,自然就能正确显示了。

修正方案

只需要把contourf里的transform参数改成ccrs.PlateCarree()即可,修正后的关键代码段如下:

cf = ax1.contourf(lon, lat, chl, levels=np.linspace(0,5,50), cmap=cmaps.MPL_rainbow,
                  transform=ccrs.PlateCarree(), extend='both')

额外提醒

记住Cartopy里这两个核心参数的区别:

  • projection:定义绘图轴最终要使用的投影(即图的显示方式)
  • transform:告诉Cartopy你的输入数据是基于哪个坐标系的,它会帮你把数据转换到projection指定的坐标系下显示

只要这两个参数对应正确,就不会再出现类似的空白或图形偏移问题啦!

备注:内容来源于stack exchange,提问作者Auroralin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 11:54:50