#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Fri Sep 9 16:18:43 EDT 2022 if __name__ == '__main__': import sys from misc.timer import Timer tt = Timer('start ' + ' '.join(sys.argv)) import sys, os.path, os, glob, datetime import xarray as xr, numpy as np, pandas as pd, matplotlib.pyplot as plt #more imports # if __name__ == '__main__': tt.check('end import') # #start from here model = 'FLOR' ifiles = 'precip_FLOR_HistRCP45_tigercpu_intelmpi_18_576PE_ens??_1860-2100_Pakistan.nc' ifiles = 'precip_FLOR_HistRCP45_tigercpu_intelmpi_18_576PE_10ens_1860-2100_Pakistan_BalSindh.nc' years = slice('1991', '2020') season = 'JJAS' sel_season = lambda da: da.isel(time=(da.time.dt.month>=6)&(da.time.dt.month<=9)) tag = f'{years.start}-{years.stop}_{season}' ofile = __file__.replace('.py', f'_{tag}.nc') if False and os.path.exists(ofile): print('[loaded]:', ofile) da = xr.open_dataarray(ofile) else: ds = xr.open_mfdataset(ifiles) daname = list(ds.data_vars)[0] da = ds[daname].sel(time=years).pipe(sel_season).load().mean(['time', 'ens'], keep_attrs=True) #da.to_dataset().to_netcdf(ofile) print('[saved]:', ofile) def plot_subregion(region_name='BalSindh', **kws): ax = kws.pop('ax', plt.gca()) label = kws.pop('label', region_name) region_file = f'region{region_name}.csv' df = pd.read_csv(region_file) lon = df['lon'].values lat = df['lat'].values lon = np.concatenate([lon, lon[0:1]]) lat = np.concatenate([lat, lat[0:1]]) ax.plot(lon, lat, label=label, **kws) if __name__ == '__main__': from wyconfig import * #my plot settings from geoplots import mapplot fig, ax = plt.subplots(figsize=(6,4)) da.plot(cmap='YlGnBu', vmax=10, vmin=0, levels=11) mapplot() plot_subregion('BalSindh', color='C0') plot_subregion('IndusBasin', color='C1') ax.set_xlabel('') ax.set_ylabel('') ax.legend(loc='upper left') ax.set_title(f'{model} {da.name} {tag.replace("_", " ")} climatology') #savefig if 'savefig' in sys.argv or 's' in sys.argv: #figname = __file__.replace('.py', f'.png') figname = ofile.replace('.nc', f'.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) tt.check(f'**Done**') print() if 'notshowfig' in sys.argv: pass else: plt.show()