def stationInfo(stnds, varname, name, titlestr=None, alttitle=None, lflatten=False, lmon=False,):
''' helper to generate an axes title with station info '''
if stnds.hasAxis('station'): nstn = len(stnds.axes['station']) # number of stations
else: nstn = 1 # single station
if stnds.name[:3].lower() == 'obs' and varname in stnds:
ec = stnds[varname] # some variables are not present everywhere
if ec.hasAxis('time') and ec.time.units[:3].lower() == 'mon': units = 'mon.'
elif ec.hasAxis('year') and ec.year.units.lower() == 'year': units = 'yrs.'
else: units = 'mon.' if lmon else 'yrs.'
mask = ec.data_array.mask if isinstance(ec.data_array,np.ma.MaskedArray) else np.isnan(ec.data_array)
if lflatten: rec_len = (ec.data_array.size - mask.sum()) # valid years in obs/EC
else: rec_len = int(np.round(ec.data_array.shape[-1] - mask.sum(axis=-1).mean())) # valid years in obs/EC
if titlestr: axtitle = titlestr.format(name,nstn,rec_len) # axes label
else: axtitle = "{:s} (#{:d}, {:d} {:s})".format(name,nstn,rec_len,units) # axes label
else:
if alttitle: axtitle = alttitle.format(name,nstn) # axes label
elif titlestr: axtitle = titlestr.format(name,nstn) # axes label
else: axtitle = "{:s} (#{:d}, WRF only)".format(name,nstn) # axes label
return axtitle
# function to compute some statistics and print them
评论列表
文章目录