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
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')
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
: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)
} 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]