#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Mon Dec 6 17:12:53 EST 2021 if __name__ == '__main__': from misc.timer import Timer tt = Timer(f'start {__file__}') import sys, os.path, os, glob, datetime import xarray as xr, numpy as np, pandas as pd, matplotlib.pyplot as plt #more imports import xlinregress # if __name__ == '__main__': tt.check('end import') # #start from here ds = xr.open_dataset('humh_adjusted.nc') def wyplot_lintrend(da, **kws): """plot linear trend""" da = da.dropna('year')#.sel(year=slice(1900, None)) ax = kws.pop('ax', plt.gca()) ls = kws.pop('ls', '--') reg = da.linregress.on(da.year) ax.axline([reg.year[0], reg.predicted[0]], [reg.year[-1], reg.predicted[-1]], ls=ls, **kws) if __name__ == '__main__': from wyconfig import * #my plot settings #import xfilter n_window = 7 #lowpass = lambda x: x.filter.lowpass(1/n_window, dim='year', padtype='even') lowpass = lambda x: x.rolling(year=n_window, center=True).mean() plt.close('all') ds.HU_raw.pipe(lowpass).plot(label='raw records') ds.HU_raw.pipe(lowpass).pipe(wyplot_lintrend, color='C0') ds.HU.pipe(lowpass).median('sample').plot(label='adjusted records') plt.fill_between(ds.year, *ds.HU.pipe(lowpass).quantile([0.025, 0.975], dim='sample'), alpha=0.2, color='C1', label='%95 CI') ds.HU.pipe(lowpass).median('sample').pipe(wyplot_lintrend, color='C1') plt.legend() plt.ylabel(f'{n_window}-year running-average HU #') #savefig if 'savefig' in sys.argv: figname = __file__.replace('.py', f'.png') wysavefig(figname) tt.check(f'**Done**') plt.show()