#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Thu May 21 11:24:22 EDT 2020 if __name__ == '__main__': from misc.timer import Timer tt = Timer(f'start {__file__}') import sys, os.path, os, glob import xarray as xr, numpy as np, pandas as pd #import matplotlib.pyplot as plt #more imports #from xtc import tc_count #from xtc.mask import get_landflag #maindir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) maindir = '/tigress/wenchang/analysis/seedTC' if maindir not in sys.path: sys.path.append(maindir) from AM2p5C360.SP.data_nseed_rainy2xvort import get_nseed from misc.cim import cim, sem #confidence interval of the mean # if __name__ == '__main__': tt.check('end import') #start from here #annual cycle def get_cycle(basin='NA', years=None): if years is None: years = slice('1980', '2018') da = get_nseed(basin=basin) da = da.sel(time=years) # stack dims of ['en', 'time'] and use the stacked 'time' as the new coord if 'en' in da.dims: da = da.stack(s=['en', 'time']).pipe(lambda x: x.assign_coords(s=x.time)).rename(s='time') da_mclim = da.groupby('time.month').mean('time') da_cim = da.groupby('time.month').map(cim, dim='time') da_sem = da.groupby('time.month').map(sem, dim='time') ds_mclim = xr.Dataset(dict( mclim=da_mclim, cim=da_cim, sem=da_sem )) return ds_mclim if __name__ == '__main__': from wyconfig import * #my plot settings source = 'AM2.5C360_amipHadISST' basin = 'SP' years = slice('1980', '2018') fig, ax = plt.subplots() figname = __file__.replace('.py', f'_{basin}_{source}_{tt.today()}.png') ds_ = get_cycle(basin=basin, years=years) long_name = f'N_SEED({basin}, {source})' for i,life in enumerate(ds_.life): ax.bar(x='month', height='mclim', width=0.6, yerr='cim', data=ds_.sel(life=life).assign_coords(month=ds_.month.values+0.1*i), label=f'{life.item()}') ax.legend() ax.set_xlabel('month') ax.set_title(f'{source} {basin} rainy seed # clim') ax.set_xticks(range(1,13)) plt.savefig(figname) print('[saved]:', figname) tt.check(f'**Done**') plt.show()