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

如何使用Cartopy绘制Robinson投影的pcolormesh图?

Cartopy投影切换异常问题

正常运行的PlateCarree投影代码

使用PlateCarree投影时,代码可正常渲染海岸线与卫星数据:

import cartopy.crs as ccrs
from cartopy import feature
from netCDF4 import Dataset
import matplotlib.pyplot as plt

# 获取数据
f = Dataset('data/matt.nc')
lats = f['lat'][:]
lons = f['lon'][:]
x = f['aot_869'][:]

# 绘图
ax = plt.axes(projection=ccrs.PlateCarree())
ax.add_feature(feature.COASTLINE, edgecolor='grey')
plt.pcolormesh(lons, lats, x, transform=ccrs.PlateCarree())
plt.show()

PlateCarree投影效果

切换投影后的异常情况

将目标投影改为Robinson后,海岸线消失,卫星数据显示异常:

# 绘图(修改后)
ax = plt.axes(projection=ccrs.Robinson())
ax.add_feature(feature.COASTLINE, edgecolor='grey')
plt.pcolormesh(lons, lats, x, transform=ccrs.Robinson())
plt.show()

Robinson投影异常效果

问题原因与修复方案

问题出在pcolormesh的transform参数设置错误:

  • projection参数定义绘图的目标投影(即最终图显示的投影)
  • transform参数需要指定原始数据的投影,你的卫星数据是经纬度格式,对应PlateCarree投影,而非Robinson

修正后的代码:

# 绘图(修复后)
ax = plt.axes(projection=ccrs.Robinson())
ax.add_feature(feature.COASTLINE, edgecolor='grey')
# transform保持为ccrs.PlateCarree(),因为数据是经纬度格式
plt.pcolormesh(lons, lats, x, transform=ccrs.PlateCarree())
plt.show()

这样就能在Robinson投影下正确渲染海岸线和卫星数据了。

内容的提问来源于stack exchange,提问作者noahlb123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:02:58