#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Wed May 15 23:08:39 EDT 2024 if __name__ == '__main__': import sys,os from misc.timer import Timer tt = Timer(f'[{os.getcwd()}] 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 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 import geoxarray from misc import roll_lon # if __name__ == '__main__': tt.check('end import') # #start from here """ lon0 = 360 - 51.6658 lat0 = -29.3646 lonslice = slice(360-55, 360-50) latslice = slice(-25,-30) rename = lambda x: x.rename(longitude='lon', latitude='lat') subset = lambda x: x.interp(lon=lon0, lat=lat0) """ #shapefile based subset shapefile = 'state_Rio_Grande_do_Sul/43UF2500G.shp' shdf = salem.read_shapefile(shapefile) #subset = lambda x: x.sel(lon=lonslice, lat=latslice) def getdata(daname_long): ifiles = f'/tigress/wenchang/data/era5/raw/{daname_long}/realtime202405/era5.{daname_long}.2024-0?.nc' ds = xr.open_mfdataset(ifiles).pipe(rename).pipe(roll_lon).salem.subset(shape=shdf, margin=1).salem.roi(shape=shdf).load() \ .resample(time='1D').mean(keep_attrs=True) #dataset to dataarray daname = list(ds.data_vars)[0] da = ds[daname].geo.fldmean() return da daname_long = 'mean_total_precipitation_rate' precip = getdata(daname_long) precip = precip * 24 *3600 #units convert from kg m**-2 s**-2 to mm/day precip = precip.assign_attrs(units='mm/day', long_name=daname_long.replace('_', ' ')) if __name__ == '__main__': from wyconfig import * #my plot settings from geoplots import mapplot fig, ax = plt.subplots(figsize=(8,3)) da = precip da.plot(marker='o', markerfacecolor='none') ax.set_title(f'ERA5 precip: state Rio Grande do Sul precip') ax.set_xlabel('') axin = ax.inset_axes([0, 0.5, 0.2, 0.5], transform=ax.transAxes) shdf.plot(ax=axin) #axin.set_xticks(range(-70, -50+1, 10)) #axin.set_yticks(range(-40, -10+1, 10)) #mapplot(ax=axin) axin.spines['left'].set_visible(False) axin.spines['bottom'].set_visible(False) axin.set_xticks([]) axin.set_yticks([]) #iavefig 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) tt.check(f'**Done**') print() if 'notshowfig' in sys.argv or 'n' in sys.argv: pass else: if 'plt' in globals(): plt.show()