def make_plots(fname, save_prefix=None): data = NetCDFRadarData(fname) moments_fig1 = [data.fields.grab(moment, pol='H', source='ts') for moment in (datatypes.Power, datatypes.Reflectivity, datatypes.DopplerVelocity, datatypes.SpectrumWidth, datatypes.ZDR, datatypes.RhoHV, datatypes.KDP, datatypes.PhiDP)] moments_fig2 = [data.fields.grab(moment, pol='H', source='average') for moment in (datatypes.Power, datatypes.Reflectivity, datatypes.DopplerVelocity, datatypes.SpectrumWidth, datatypes.ZDR, datatypes.BackscatterPhase, datatypes.KDP, datatypes.PhiDP)] figs = [] for moms in [moments_fig1, moments_fig2]: figs.append(plt.figure(figsize=(8, 4), dpi=107)) # Need some way to control the formatting of a datatype into a string # Maybe using a "global" setting and a context maanger grid = defaults.multipanel_cbar_each(figs[-1], (2,4), moms, data) ax = grid[0] ax.xaxis.set_major_locator(plt.MultipleLocator(10)) ax.set_ylim(0, 50) ax.set_xlim(-20, 20) figs[-1].suptitle('%.1f cm' % data.wavelength.rescale('cm')) if save_prefix: for num,f in enumerate(figs): f.savefig(save_prefix + '-%d.png' % num) else: plt.show()
plt.rcParams['font.size'] = 12 plots.defaults.axisDefaults.setup = setupDefaults data_cache = DataCache('ref_runs', make_key, ('band', 'exp')) data_cache.key_sorter = sorter wavelengths,exps = data_cache.sub_keys() for lam_text, exp_text in [('C', 'Control'), ('X', 'Control')]: data = data_cache[lam_text, exp_text] with datatypes.PlotInfoContext(wavelength=data.wavelength): for desc,moms in [('Single', (datatypes.Reflectivity, datatypes.DopplerVelocity, datatypes.SpectrumWidth)), ('Dual', (datatypes.ZDR, datatypes.RhoHV, datatypes.PhiDP)), ('Attenuation', (datatypes.Attenuation, datatypes.DiffAtten))]: source = 'calc' if desc=='Attenuation' else 'ts' moments = [data.fields.grab(moment, pol='H', source=source) for moment in moms] fig = plt.figure(figsize=(11, 6), dpi=200) if len(moments) == 3: rect = [0.07, 0.05, 0.88, 0.95] else: rect = [0.07, 0.05, 0.88, 0.82] grid = defaults.multipanel_cbar_each(fig, (1, len(moments)), moments, data, rect=rect) for ax in grid: ax.title.set_verticalalignment('bottom') text = '%s-Band %s' % (lam_text, desc) title = grid[0].figure.suptitle(text, fontsize=18) fig.savefig('%s_%s.png' % (lam_text, desc), bbox_inches='tight', dpi=200)
data_cache = load_spatial_experiments('spatial_runs', glob='Xband*') data = data_cache[('X','Control')] for band,exp in data_cache: data = data_cache[band,exp] fig_rect = [0.08, 0.08, 0.84, 0.84] title_text = '%s-band %s' % (data.waveBand, exp.title()) basename = '%s_%s.png' % (band, exp.replace(' ', '')) with datatypes.PlotInfoContext(wavelength=data.wavelength): moments = [data.fields.grab(moment, pol='H', source='ts') for moment in (datatypes.Reflectivity, datatypes.DopplerVelocity, datatypes.SpectrumWidth)] moments.append(data.fields.grab(datatypes.Attenuation, pol='H', source='calc')) grid = defaults.multipanel_cbar_each(plt.figure(), (2, 2), moments, data, rect=fig_rect) title = grid[0].figure.suptitle(title_text, fontsize=11) if args.save: grid[0].figure.savefig('single_' + basename) with datatypes.PlotInfoContext(wavelength=data.wavelength): moments = [data.fields.grab(moment, pol='H', source='ts') for moment in (datatypes.ZDR, datatypes.RhoHV, datatypes.PhiDP)] moments.append(data.fields.grab(datatypes.DiffAtten, pol='diff', source='calc')) grid = defaults.multipanel_cbar_each(plt.figure(), (2, 2), moments, data, rect=fig_rect) title = grid[0].figure.suptitle(title_text, fontsize=11) if args.save: grid[0].figure.savefig('dual_' + basename)
from disser.experiments import (script_args, load_model_experiments, process_all_atten) from disser.atten import attenAlgs from disser.datatypes import Reflectivity, Attenuation, PlotInfoContext, PhiDP from disser.plots.defaults import multipanel_cbar_each rcParams['figure.subplot.top'] = 0.95 rcParams['figure.subplot.bottom'] = 0.07 args = script_args().parse_args() data_cache = load_model_experiments('ref_runs', glob='Cband*') data = data_cache[('C','Control')] data.fields.default_keys['source'] = 'average' attenAlgs.run(['ZPHI', 'SC'], data, var='H') moms = [(Reflectivity, 'average'), (PhiDP, 'average'), (Attenuation, 'calc'), (Attenuation, 'ZPHI'), (Attenuation, 'SC')] #moms = [(Attenuation, 'SC'), (Attenuation, 'ZPHI')] data.fields.default_keys['pol'] = 'H' with PlotInfoContext(wavelength=data.wavelength): for dt,src in moms: fig = plt.figure(figsize=(8, 6)) mom = data.fields.grab(dt, source=src) multipanel_cbar_each(fig, (1, 1), [mom], data) if args.save: fig.savefig('{.name}_{:s}.png'.format(dt, src)) if not args.save: plt.show()