Exemple #1
0
def _plt_tmp(_ds, axs, var_xl, var_diff, xlims):
    for var, ax in zip(var_xl, axs.flatten()):
        print(var)
        xlim = xlims[var]
        h = _plt_2dhist(_ds,
                        f'{var}_{case_orig}',
                        var_diff,
                        nr_bins=40,
                        xlim=xlim,
                        ax=ax)
        uni = var_info.get_fancy_unit_xr(_ds[var], var)
        ax.set_xlabel(f'{get_fancy_var_name(var)} [{uni}]')
        ax.plot(xlim, [0, 0], linewidth=.5, c='k')

    uni = var_info.get_fancy_unit_xr(_ds[var_diff], var_diff)
    fvar_diff = get_fancy_var_name(var_diff)
    ylab = f'$\Delta${fvar_diff} [{uni}]'
    for ax in axs[:, 0]:
        ax.set_ylabel(ylab)

    subp_insert_abc(axs)

    suptit = f'{get_nice_name_case(case_sec)}-{get_nice_name_case(case_orig)} vs.  '
    suptit = f'{fvar_diff}$(m_1)-${fvar_diff}$(m_2)$ vs. $X(m_2)$ \n for $m_1=${get_nice_name_case(case_sec)}, $m_2=${get_nice_name_case(case_orig)}'
    fig.subplots_adjust(hspace=.5, wspace=0.1)  #,top=0.8, )
    stit = fig.suptitle(suptit, fontsize=12, y=.98)

    return
Exemple #2
0
def plot_profile(da,
                 ax,
                 xscale='log',
                 yscale='log',
                 label='',
                 ylim=[1e3, 100],
                 pressure_coords=True,
                 kwargs={},
                 title=''):
    if 'ylim' in kwargs:
        ylim = kwargs['ylim']
    for key, val in zip(['xscale', 'yscale', 'ylim', 'label'],
                        [xscale, yscale, ylim, label]):
        if key not in kwargs:
            kwargs[key] = val
    plt_da = da.where(
        np.logical_and(da['lev'] <= ylim[0], da['lev'] >= ylim[1]))
    plt_da.plot(y='lev', **kwargs, ax=ax)

    ylim = [
        da.lev.where(plt_da.notnull()).max(),
        da.lev.where(plt_da.notnull()).min()
    ]
    ax.set_ylim(ylim)
    if len(title) > 0:
        ax.set_title(title)
    if pressure_coords:
        ax.set_ylabel('Pressure [hPa]')
    var = da.name
    xlabel = get_fancy_var_name(
        var
    ) + ' [%s]' % sectional_v2.util.naming_conventions.var_info.get_fancy_unit_xr(
        da, var)
    ax.set_xlabel(xlabel)
    ax.grid(True, which='both')
Exemple #3
0
def plot_map_diff(var,
                  case_ctrl,
                  case_oth,
                  cases_dic,
                  figsize=None,
                  relative=False,
                  tit_ext='',
                  contourf=False,
                  ax=None,
                  cmap_diff='RdBu_r',
                  cbar_orientation='vertical',
                  **kwargs_diff):
    """
    Plot absolute for case
    :param ax:
    :param var: variable to plot
    :param case_ctrl: cases to plot
    :param cases_dic: dictionary of datasets, keys are case names.
    :param figsize: figure size
    :param kwargs_diff:
    :param cmap_diff:
    :return:
    """
    ctrl_da = cases_dic[case_oth][var]
    if relative:
        func = frelative
        unit_diff = ' [%]'
        label = 'rel.$\Delta$' + get_fancy_var_name(var) + unit_diff

    else:
        func = fdifference
        unit_diff = ' [%s]' % sectional_v2.util.naming_conventions.var_info.get_fancy_unit_xr(
            ctrl_da, var)
        label = '$\Delta$' + get_fancy_var_name(var) + unit_diff

    #get_vmin_vmax(plt_not_ctrl)
    if kwargs_diff is None:
        kwargs_diff = {}
    if figsize is None:
        figsize = [6, 3]
    if 'cmap' not in kwargs_diff:
        kwargs_diff['cmap'] = cmap_diff
    if ax is None:
        fig, ax = subplots_map(1,
                               figsize=figsize,
                               subplot_kw={'projection': ccrs.Robinson()
                                           })  # Orthographic(10, 0))
    kwargs_diff['robust'] = True
    #plt_var = cases_dic[case][var]
    plt_var = func(cases_dic[case_oth][var], cases_dic[case_ctrl][var])
    if 'vmax' not in kwargs_diff:
        set_vmin_vmax_diff([case_oth], False, case_ctrl, func, kwargs_diff,
                           cases_dic, var)

    cba_kwargs = dict(aspect=12, label=label, shrink=0.95)
    if cbar_orientation == 'horizontal':
        cba_kwargs['orientation'] = cbar_orientation
        cba_kwargs['pad'] = 0.05
    #
    if 'add_colorbar' in kwargs_diff.keys():
        if kwargs_diff['add_colorbar']:
            kwargs_diff['cbar_kwargs'] = cba_kwargs
    else:
        kwargs_diff['cbar_kwargs'] = cba_kwargs

    if contourf:
        im = plt_var.plot.contourf(ax=ax,
                                   transform=ccrs.PlateCarree(),
                                   **kwargs_diff)
    else:
        im = plt_var.plot(ax=ax, transform=ccrs.PlateCarree(), **kwargs_diff)
    glob_diff = get_avg_diff(case_oth, case_ctrl, cases_dic, relative, var)
    tit = set_title_diff(case_ctrl, case_oth, relative, glob_diff=glob_diff)
    ax.set_title(tit + tit_ext)
    ax.set_aspect('auto', adjustable=None)

    fix_axis4map_plot(ax)
    return ax, kwargs_diff
Exemple #4
0
    :param kwargs_abs:
    :param cmap_abs:
    :return:
    """

    plt_var = cases_dic[case][var]

    if kwargs_abs is None:
        kwargs_abs = {}
    if figsize is None:
        figsize = [6, 3]
    if 'cmap' not in kwargs_abs:
        kwargs_abs['cmap'] = cmap_abs

    label = get_fancy_var_name(
        var
    ) + ' [%s]' % sectional_v2.util.naming_conventions.var_info.get_fancy_unit_xr(
        plt_var, var)
    cba_kwargs = dict(aspect=12, label=label)
    if cbar_orientation == 'horizontal':
        cba_kwargs['orientation'] = cbar_orientation
        cba_kwargs['pad'] = 0.05
        cba_kwargs['shrink'] = 0.75
        cba_kwargs['aspect'] = 16
    if 'add_colorbar' in kwargs:
        if kwargs['add_colorbar']:
            kwargs_abs['cbar_kwargs'] = cba_kwargs
    else:
        kwargs_abs['cbar_kwargs'] = cba_kwargs
    ax, im = plt_map(plt_var, ax, figsize, **kwargs_abs, **kwargs)
Exemple #5
0
}
for var, ax in zip(var_xl, axs.flatten()):
    print(var)
    xlim = xlims[var]
    h = _plt_2dhist(_ds,
                    f'{var}_{case_orig}',
                    var_diff,
                    nr_bins=40,
                    xlim=xlim,
                    ax=ax)
    uni = var_info.get_fancy_unit_xr(_ds[var], var)
    ax.set_xlabel(f'{get_fancy_var_name(var)} [{uni}]')
    ax.plot(xlim, [0, 0], linewidth=.5, c='k')

uni = var_info.get_fancy_unit_xr(_ds[var_diff], var_diff)
fvar_diff = get_fancy_var_name(var_diff)
ylab = f'$\Delta${fvar_diff} [{uni}]'
for ax in axs[:, 0]:
    ax.set_ylabel(ylab)

subp_insert_abc(axs)

suptit = f'{get_nice_name_case(case_sec)}-{get_nice_name_case(case_orig)} vs.  '
suptit = f'{fvar_diff}$(m_1)-${fvar_diff}$(m_2)$ vs. $X(m_2)$ \n for $m_1=${get_nice_name_case(case_sec)}, $m_2=${get_nice_name_case(case_orig)}'
fig.subplots_adjust(hspace=.5, wspace=0.1)  #,top=0.8, )
stit = fig.suptitle(suptit, fontsize=12, y=.98)
fn = plot_path + f'2dhist_{case_orig}_{case_sec}.'
#fig.savefig(fn+'pdf',bbox_extra_artists=(stit,), bbox_inches='tight')
#fig.savefig(fn+'png',bbox_extra_artists=(stit,), bbox_inches='tight')
plt.show()
print(fn)
_ds = ds_diff.sel(lev=slice(lev_min, None))
var_diff = 'NCONC01_' + case_base
xlims = {
    'NUCLRATE': [1.e-6, 10],
    'H2SO4': [1.e-3, 1],
    'SOA_LV': [1.e-5, 1],
    'GR': [1.e-3, 1],
    'N_AER': [1e0, 1e4],
    'NCONC01': [10, 5e3],
    'COAGNUCL': [1e-4, 1],
}

stit = _plt_tmp_mv1v2(_ds, axs, var_xl, xlims)  #,ylim=[5.,1e3], yscale='log')
#_plt_tmp(_ds,axs,var_xl, var_diff, xlims, ylim=[10,5e3], yscale='log', case_base=case_base)
uni = var_info.get_fancy_unit_xr(_ds[var_diff], var_diff)
fvar_diff = get_fancy_var_name('NCONC01')

suptit = f'$X(m$_1$)$ vs. $X(m$_2$)$ \n for $m_1=${get_nice_name_case(case_base)}, and $m_2=${get_nice_name_case(case_oth)}'
fig.subplots_adjust(hspace=.5, wspace=0.1)  #,top=0.8, )
#stit = fig.suptitle(suptit,  fontsize=12, y=.98)
fn = plot_path + f'2dhist_abs_corr{case_base}_{case_oth}.'
fig.savefig(fn + 'pdf', bbox_extra_artists=(stit, ), bbox_inches='tight')
#fig.savefig(fn+'png',bbox_extra_artists=(stit,), bbox_inches='tight')
fig.tight_layout()
plt.show()
print(fn)

# %% [markdown]
# # ABSOLUTE RELATIONSHIPS:

# %% [markdown]