Как получить границы страны при построении графика с imshow в python - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь построить сезонное среднее значение из файла netcdf, используя xarray и matplotlib. Я получаю графики с осями широты и долготы, но границы страны нет. Как получить границы страны на участках.

import xarray as xr
import matplotlib as mpl
import matplotlib.pyplot as plt

fname='/home/atmosphere/data/outputs/2010.nc'         #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

ds=xr.open_mfdataset(fname)
varlist=list(ds.variables)
imr=ds.sel(lat=slice(0,35),lon=slice(60,100)) #subsetting overthe region
imrbt=imr['temp']                             #making into a data array  
ds['time.season']

seasonal=imrbt.groupby('time.season').mean(dim='time')
seasonal.plot.imshow(col='season',robust=True)

1 Ответ

0 голосов
/ 12 марта 2020

Как уже упоминалось @Bart, для решения этой проблемы необходимо использовать cartopy:

import cartopy.crs as ccrs
air = xr.tutorial.open_dataset('air_temperature').air
ax = plt.axes(projection=ccrs.Orthographic(-80, 35))
seasonal.plot.contourf(ax=ax, transform=ccrs.PlateCarree())
ax.add_feature(cartopy.feature.BORDERS)
ax.coastlines()

Чтобы добавить границы страны в более высоком разрешении, вы должны использовать функции картопы:

import cartopy.feature as cfeature

country_borders = cfeature.NaturalEarthFeature(
    category='cultural',
    name='‘admin_0_boundary_lines_land',
    scale='50m',
    facecolor='none')
ax.add_feature(country_borders, edgecolor='gray')
...