使用Cartopy从数据中屏蔽海洋或陆地

2024-04-27 03:05:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从全球的海平面温度数据中屏蔽陆地区域。我用卡通片绘制数据。在

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from netCDF4 import dataset

f = Dataset('sst.mnmean.nc')
sst = f.variables['sst'][0,:,:]
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]

ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines()
plot = ax.contourf(lons, lats, sst, 60, transform=ccrs.PlateCarree())
cb = plt.colorbar(plot)
plt.show()

上面的代码按如下方式绘制数据:
enter image description here

我想掩盖这片土地。在


Tags: 数据importplotas绘制pltvariablesax
2条回答

我浏览了卡通片的文档,发现了一个名为add_feature的方法。代码如下:

import numpy as np
import matplotlib.pyplot as plt
import cartopy as cart
from mpl_toolkits.basemap import Basemap
from netCDF4 import Dataset

f = Dataset('sst.mnmean.nc')
sst = f.variables['sst'][0,:,:]
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]

ax = plt.axes(projection=cart.crs.PlateCarree())
ax.coastlines()
ax.add_feature(cart.feature.LAND, zorder=100, edgecolor='k')
ax.set_global()
plot = ax.contourf(lons, lats, sst, 60, transform=cart.crs.PlateCarree())
cb = plt.colorbar(plot)
plt.show()

图现在看起来像this。 要屏蔽海洋,请将cart.feature.LAND更改为cart.feature.OCEAN

为了掩盖土地面积,使用底图会更容易。在

from mpl_toolkits.basemap import Basemap
map = Basemap(projection='mill',lon_0=180) # create projection
....                                       # whatever processing needed
map.fillcontinents(color='coral')          # mask land mass

See basemap example here

相关问题 更多 >