У меня есть простой фрагмент кода и спутниковые данные, которые работают по назначению с проекцией Cartopy по умолчанию «PlateCarree»:
import cartopy.crs as ccrs
from cartopy import feature
from netCDF4 import Dataset
import matplotlib.pyplot as plt
#get data
f = Dataset('data/matt.nc')
lats = f['lat'][:]
lons = f['lon'][:]
x = f['aot_869'][:]
#plot
ax = plt.axes(projection=ccrs.PlateCarree())
ax.add_feature(feature.COASTLINE, edgecolor='grey')
plt.pcolormesh(lons, lats, x, transform=ccrs.PlateCarree())
plt.show()
Но когда я меняю проекцию на что-нибудь другое, включая «Робинзон», береговая линия исчезает, а спутниковые данные остаются в проекции PlateCarree.
#plot
ax = plt.axes(projection=ccrs.Robinson())
ax.add_feature(feature.COASTLINE, edgecolor='grey')
plt.pcolormesh(lons, lats, x, transform=ccrs.Robinson())
plt.show()
Свотчаи сработало, спасибо! Пишу в ответ сейчас!






plt.axes должен находиться в проекции Робинсона, а plt.pcolormesh должен находиться в проекции PlateCarree, чтобы общая цифра была в проекции Робинсона. Как объясняет swatchai в комментариях, «в pcolormesh() вы должны правильно объявить систему координат (лоны, ширы) с оператором transform=??. Если (лоны, ширы) представлены в простых десятичных градусах, вы всегда используете transform=ccrs.PlateCarree(), независимо от того, какая проекция построения является."
import cartopy.crs as ccrs
from cartopy import feature
from netCDF4 import Dataset
import matplotlib.pyplot as plt
#get data
f = Dataset('data/matt.nc')
lats = f['lat'][:]
lons = f['lon'][:]
x = f['aot_869'][:]
#plot
ax = plt.axes(projection=ccrs.Robinson())
ax.add_feature(feature.COASTLINE, edgecolor='grey')
plt.pcolormesh(lons, lats, x, transform=ccrs.PlateCarree())
plt.show()
Причина в том, что в pcolormesh() вы должны объявить систему координат (лоны, широты) с помощью оператора "transform=??" правильно. Если (лоны, латы) выражены в простых десятичных градусах, вы всегда используете transform=ccrs.PlateCarree() независимо от проекции графика.
Эта страница может помочь в понимании scitools.org.uk/cartopy/docs/latest/tutorials/…
Измените «transform=ccrs.Robinson()» на «transform=ccrs.PlateCarree()».