XARRAY Contour Plot AttributeError: Contourf - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь нанести переменную xarray в контурной форме на глобальную карту, используя данные NCEP Reanalysis netcdf4. Я вычисляю, используя xarray стандартизированную аномалию для переменной «slp», сравнивая февраль текущего месяца со средним значением февраля последних лет с 2016-2019 гг. Я могу получить окончательную переменную (stdn "как xarray.core.dataset. Однако мое сообщение об ошибке выглядит следующим образом, и я обновил matplotlib до текущей версии 3.2. Я искал эту ошибку без посторонней помощи. Спасибо Вы! Мой код следующий, и я продолжаю получать эту ошибку - AttributeError: у объекта '_Dataset_PlotMethods' нет атрибута 'contourf'.

from sys import exit
import netCDF4 as nc4
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap, cm
import datetime 
import pandas as pd
import xarray as xr
import bottleneck as bn
import cartopy.crs as ccrs

#The easiest way to read the data is:
path = "//porfiler03/gtdshare/IDL/wtypes/data/slp.2020.nc"
DSC = xr.open_mfdataset(path,combine='nested',concat_dim='time')
DSC = DSC.sel(time=slice('2020-02-01','2020-02-29'))
damc = DSC.groupby('time.month').mean(dim='time')#current year/month Feb 2020 mean slp

mfdataDIR = "//porfiler03/gtdshare/IDL/wtypes/data/avgyears/*.nc"
DS = xr.open_mfdataset(mfdataDIR,combine='nested',concat_dim='time')
da = DS.slp.ffill(dim='time')
da = da.sel(time=slice('2016-01-01','2019-12-31'))
dam = da.groupby('time.month').mean(dim='time')# monthly mean of 2016-2019 dim 12x73x144
damcm = dam.sel(month=slice('2'))#current month mean slp
dams = da.groupby('time.month').std(dim='time')#
damscm = dams.sel(month=slice('2'))#current month stdev slp

stdn = (damc - damcm)/ damscm#standard normal for Feb 2020 
#
stdn.plot.contourf()

exit()

# same error using the below code
ax = plt.axes(projection=ccrs.Orthographic(-80, 35))
ax.set_global()
stdn.plot.contourf(ax=ax, transform=ccrs.PlateCarree())
ax.coastlines()

Или я пробовал это, и я получаю следующую ошибку:

stdn.plot(robust=True, figsize=(10,6))

ValueError: Dataset.plot не может быть вызван напрямую. Используйте явный метод заговора, например, ds.plot.scatter (...)

1 Ответ

1 голос
/ 20 марта 2020

Чтобы максимально использовать функциональность построения графиков xarray, лучше всего сначала извлечь базовый DataArray из stdn! Тогда вы сможете просто сделать da_stdn.plot(), и все должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...