def plot_step(self, grid_prams, time_index=0, vlist=None, figdir=None, sep_fig_dirs=True, **kwargs): pf = self.files[time_index] afile = self.dirname+'/'+pf tstr = pf[4:-2] DO_SAVE = (figdir is not None) if DO_SAVE: if not os.path.exists(figdir): os.mkdir(figdir) # do the plots fields = fn_read_general_binary(afile, vlist=vlist)[0] if not sep_fig_dirs: Fplt.fn_plot_gen(grid_prams, fields, figdir=figdir, text=tstr, **kwargs) else: for vbl in fields: subdir = figdir if DO_SAVE: subdir = figdir+'/'+vbl if not os.path.exists(subdir): os.mkdir(subdir) else: subdir = None Fplt.fn_plot_gen(grid_prams, {vbl: fields[vbl]}, figdir=subdir, text=tstr, **kwargs) return
def plot_step(self,grid_prams,figdir3=None,time_index=0,vlist=None,**kwargs): pf = self.files[time_index] afile = self.dir+'/'+pf tstr = pf[4:-2] DO_SAVE = (figdir3 is not None) if DO_SAVE: if not os.path.exists(figdir3): os.mkdir(figdir3) # ============================================================= # determine the plotting limits if 0: # set colorbar axes manually zlims = {'icec' :[0,1], \ 'iceh' :[0,5], \ 'Dmax' :[0,300], \ 'tau_x' :[-.5,.5], \ 'tau_y' :[-.05,.05],\ 'Hs' :[0,4], \ 'Tp' :[10,20], \ 'mwd' :[-180,180]} elif 1: # let python choose # - different for each time step, # so not good for a movie for example zlims = {'icec' :None,\ 'iceh' :None,\ 'Dmax' :None,\ 'tau_x' :None,\ 'tau_y' :None,\ 'Hs' :None,\ 'Tp' :None,\ 'mwd' :None} # ============================================================= # ============================================================= # do the plot fields = fn_read_general_binary(afile,vlist=vlist)[0] if DO_SAVE: figdir3B = figdir3+'/'+vbl if not os.path.exists(figdir3B): os.mkdir(figdir3B) else: figdir3B = None Fplt.fn_plot_gen(grid_prams,fields,figdir=figdir3B,\ zlims_in=zlims,text=tstr,vlist=Flds,**kwargs) # ============================================================= return
def plot_grid(self, show=False, **kwargs): print('\nPLOTTING LAND MASK...\n') if not show: hold = False figdir = self.figdir if not os.path.exists(figdir): os.mkdir(figdir) figdir += '/grid' if not os.path.exists(figdir): os.mkdir(figdir) else: figdir = None hold = True grid_prams = self.get_grid() Fplt.fn_plot_gen(grid_prams, grid_prams, vlist=['LANDMASK'], \ figdir=figdir, hold=hold) return
def plot_steps(self,grid_prams,figdir3,**kwargs): pdir = self.dir if not os.path.exists(figdir3): os.mkdir(figdir3) # ============================================================= # determine the plotting limits if 0: # set colorbar axes manually zlims = {'icec' :[0,1], \ 'iceh' :[0,5], \ 'Dmax' :[0,300], \ 'tau_x' :[-.5,.5], \ 'tau_y' :[-.05,.05],\ 'Hs' :[0,4], \ 'Tp' :[10,20], \ 'mwd' :[-180,180]} elif 0: # let python choose # - different for each time step, # so not good for a movie for example zlims = {'icec' :None,\ 'iceh' :None,\ 'Dmax' :None,\ 'tau_x' :None,\ 'tau_y' :None,\ 'Hs' :None,\ 'Tp' :None,\ 'mwd' :None} else: # set colorbar axes automatically zdef = [1.e30,-1.e30] zlims = {'icec' :1*zdef,\ 'iceh' :1*zdef,\ 'Dmax' :1*zdef,\ 'tau_x':1*zdef,\ 'tau_y':1*zdef,\ 'Hs' :1*zdef,\ 'Tp' :1*zdef,\ 'mwd' :1*zdef} # ============================================================= # determine the plotting limits # by checking the arrays alist = self.files tlist = [] for pf in alist: afile = pdir+'/'+pf # fields = fn_read_general_binary(afile,**kwargs)[0] for key in fields.keys(): key2 = check_names(key,zlims.keys()) if key2!="": zmin = fields[key].min() zmax = fields[key].max() if zmin<zlims[key2][0]: zlims[key2][0] = zmin if zmax>zlims[key2][1]: zlims[key2][1] = zmax # tlist.append('_'+pf[4:-2]) # ============================================================= # ============================================================= # ============================================================= # do the plots for vbl in fields.keys(): print('\n') print('Plotting results for '+vbl) print('\n') figdir3B = figdir3+'/'+vbl if not os.path.exists(figdir3B): os.mkdir(figdir3B) for i,pf in enumerate(alist): print(self.times[i]) afile = pdir+'/'+pf fields = fn_read_general_binary(afile)[0] Fplt.fn_plot_gen(grid_prams,fields,figdir=figdir3B,\ zlims_in=zlims,text=tlist[i],vlist=[vbl]) # ============================================================= return
import os,sys import matplotlib.pyplot as plt w2d = os.getenv('WIM2D_PATH') sys.path.append(w2d+'/fortran/py_funs') import fns_get_data as Fdat import fns_plot_data as Fplt gdir = '.' gf = Fdat.fn_check_grid(gdir) fields = {'LANDMASK':gf['LANDMASK']} Fplt.fn_plot_gen(gf,fields,'out/') figname = 'land_mask.png' print('Saved to '+figname)
# field_profiles = {} for key in fields.keys(): F = fields[key][:, 0] field_profiles.update({key: F}) # grid_profiles = {} for key in grid_prams.keys(): try: F = grid_prams[key][:, 0] except: F = grid_prams[key] grid_profiles.update({key: F}) grid_profiles["ny"] = 1 Fplt.fn_plot_gen(grid_profiles, field_profiles, figdir3B, zlims_in=zlims) print("\n**********************************************************************") print("to make movie, type") print(wim2d_path + "/fortran/tools/prog2mp4.sh Hs " + outdir + "/figs/prog_profiles") print("or") print(wim2d_path + "/fortran/tools/prog2mp4.sh Dmax " + outdir + "/figs/prog_profiles") print("**********************************************************************\n") elif PROG_OPT == 2: ################################################################ # Plot 1 variable as profiles on same graph (eg to test convergence to steady) # cols = ["k", "b", "r", "g", "m", "c"] lstil = ["-", "--", "-.", ":"] Nc = len(cols)
def plot_steps(self, grid_prams, figdir3, zlims=None, vlist=None, **kwargs): pdir = self.dirname if not os.path.exists(figdir3): os.mkdir(figdir3) # check variables to stop crash if vlist is not None: Vlist = [] for vbl in vlist: if vbl in self.variables: Vlist.append(vbl) if len(Vlist)==0: print("Variables in 'vlist' argument not present in files") print("Variables that are available:") for vbl in self.variables: print(" "+vbl) return else: Vlist = None # determine the plotting limits if zlims is None: # set colorbar axes automatically zdef = [1.e30, -1.e30] zlims = {'icec' :1*zdef, 'iceh' :1*zdef, 'Dmax' :1*zdef, 'tau_x':1*zdef, 'tau_y':1*zdef, 'Hs' :1*zdef, 'Tp' :1*zdef, 'mwd' :1*zdef} # determine the plotting limits # by checking the arrays alist = self.files tlist = [] for pf in alist: afile = pdir+'/'+pf # fields = fn_read_general_binary(afile, vlist=Vlist, **kwargs)[0] for key in fields: key2 = check_names(key, list(zlims), stop=False) if key2!="": zmin = fields[key].min() zmax = fields[key].max() if zmin<zlims[key2][0]: zlims[key2][0] = zmin if zmax>zlims[key2][1]: zlims[key2][1] = zmax # tlist.append('_'+pf[4:-2]) for vbl in fields: key2 = check_names(key, list(zlims), stop=False) if key2!="": print("range in "+vbl, zlims[key2][0], zlims[key2][1]) # do the plots for vbl in fields: print('\n') print('Plotting results for '+vbl) print('\n') figdir3B = figdir3+'/'+vbl if not os.path.exists(figdir3B): os.mkdir(figdir3B) for i, pf in enumerate(alist): print(self.times[i]) afile = pdir+'/'+pf fields = fn_read_general_binary(afile)[0] Fplt.fn_plot_gen(grid_prams, fields, figdir=figdir3B, \ zlims_in=zlims, text=tlist[i], vlist=[vbl]) return