#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Fri Jun 20 10:45:39 AM EDT 2025 if __name__ == '__main__': import sys,os try: from misc.timer import Timer tt = Timer(f'[{os.getcwd()}] start ' + ' '.join(sys.argv)) except: pass import sys, os.path, os, glob, datetime import xarray as xr, numpy as np, pandas as pd, matplotlib.pyplot as plt #more imports wython = '/tigress/wenchang/wython' if wython not in sys.path: sys.path.append(wython); print('added to python path:', wython) #from misc import get_kws_from_argv from misc.landmask import whereland from geoplots.cartopy.api import cartoplot, cartoproj # if __name__ == '__main__': try: tt.check('end import') except: pass # #start from here daname = 'mn2t' daname_new = 'Tmin' years = range(1979, 2024+1) ifiles = [f'/projects/w/wenchang/data/era5/analysis_wy/2m_temperature_min/monthly/era5.2m_temperature_min.monthly.{year}.nc' for year in years] print('dataset openning...') ds = xr.open_mfdataset(ifiles) print('data loading...') da = ds[daname].load() def wyplot(ax=None, **kws): vmax, vmin = 40, -40 proj = cartoproj('robin') if ax is None: ax = plt.axes(projection=proj) da_ = da.groupby('time.year').min().mean('year').pipe(whereland) - 273.15 da_.attrs['units'] = 'degC' da_.name = daname_new #da_.plot(center=False) #da_.pipe(cartoplot, center=False) im = da_.plot(ax=ax, center=False, transform=cartoproj('cyl'), vmax=vmax, vmin=vmin, extend='both', **kws) title = f'ERA5 annual min tas averaged over {years[0]}-{years[-1]}' ax.set_title(title, loc='center') return im if __name__ == '__main__': from wyconfig import * #my plot settings wyplot() #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) try: tt.check(f'**Done**') except: pass print() if 'notshowfig' in sys.argv or 'n' in sys.argv: pass else: if 'plt' in globals(): plt.show()