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()
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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()