Пример #1
0
    for col, nam in zip(colors, resuu.keys()):
        coso = resuu[nam][var].mean('lon').groupby("time.year").mean()
        glomean = np.average(coso, weights = abs(np.cos(np.deg2rad(coso.lat))), axis = -1)
        if var == 'evspsbl':
            plt.plot(coso.year.data, np.abs(glomean), label = nam, color = col, linewidth = 2)
        else:
            plt.plot(coso.year.data, glomean, label = nam, color = col, linewidth = 2)

    plt.grid()
    plt.title(var)
    #plt.legend()
    ctl.custom_legend(fig, colors, resuu.keys(), ncol = 4, add_space_below = 0.03)
    figs_global.append(fig)

ctl.plot_pdfpages(cart + 'global_timeseries_allmems.pdf', figs_global)
sys.exit()

#srf_net = ssr + str + sshf + slhf
surf_fluxs = ['rsds', 'rlds', 'rsus', 'rlus', 'hfss', 'hfls']
toa_fluxs = ['rlut', 'rsut', 'rsdt']
allvars = surf_fluxs + toa_fluxs + ['clt', 'clwvi', 'evspsbl']

fir_HR = '/home/paolo/work/data/REFORGE/EC-Earth3-TL799/rfrg-orog255-noparam/r2i1p1f1/mon/{}/{}_Amon_EC-Earth3-TL799_rfrg-orog255-noparam_r2i1p1f1_r144x73_*nc'
fir_LR = '/home/paolo/work/data/REFORGE/EC-Earth3/rfrg-ctrl-noparam/r1i1p1f1/mon/{}/{}_Amon_EC-Earth3_rfrg-ctrl-noparam_r1i1p1f1_r144x73_*nc'

fils_HR = np.concatenate([glob.glob(fir_HR.format(var, var)) for var in allvars])
fils_LR = np.concatenate([glob.glob(fir_LR.format(var, var)) for var in allvars])

flux_lr = xr.open_mfdataset(fils_LR, use_cftime = True)
flux_hr = xr.open_mfdataset(fils_HR, use_cftime = True)
Пример #2
0
ax.plot(lat, okplostoc, label='stoc fut', linewidth=2.0)
ax.plot(lat,
        10 * (okplostoc - okplobase),
        label='(diff s-b) x 10',
        linewidth=1.0,
        linestyle='--')
plt.xlabel('Latitude')
plt.ylabel('Heat flux (W)')
plt.legend()
plt.grid()
figures.append(fig)
axes.append(ax)

ctl.adjust_ax_scale(axes, sel_axis='both')

ctl.plot_pdfpages(figure_file, figures)
plt.close('all')

figure_file = cart_out + 'global_diff_net_fluxes.pdf'
figures = []
axes = []

fig = plt.figure()
ax = plt.subplot(1, 1, 1)
plt.title('Net flux at TOA')
for lett, tim in zip(['a', 'f'], ['_hist', '_fut']):
    for cosone, ls in zip(['stoc', 'base'], [':', '--']):
        coso = radclim[('global', cosone + tim, 'toa_balance')]
        ax.plot(years[lett], coso, linewidth=0.5, color='grey', linestyle=ls)
        rollcoso = ctl.running_mean(coso, wnd=10)
        ax.plot(years[lett], rollcoso, label=cosone + tim, linewidth=2.0)
Пример #3
0
            nam_ob, yea_ob = analogs[(opa, year, 'obs_eof')]
            nam_ex, yea_ex = analogs[(opa, year, 'exp_eof')]

            obsta = obs_stat[var].sel(member = opa, time = obs_stat['time.year'] == year).squeeze() - obsme[var]
            mosta1 = mod_stat[var].sel(member = nam_ob, time = mod_stat['time.year'] == yea_ob).squeeze() - modme[var]
            mosta2 = mod_stat[var].sel(member = nam_ex, time = mod_stat['time.year'] == yea_ex).squeeze() - modme[var]

            # obsta = obs_states[opa][var].sel(time = obs_states[opa]['time.year'] == year).squeeze()
            # mosta1 = mod_states[nam_ob][var].sel(time = mod_states[nam_ob]['time.year'] == yea_ob).squeeze()
            # mosta2 = mod_states[nam_ex][var].sel(time = mod_states[nam_ex]['time.year'] == yea_ex).squeeze()

            fig = ctl.plot_multimap_contour([obsta, mosta1, mosta2], fix_subplots_shape = (1,3), title = str(year), subtitles = ['obs', 'aobs: {} {}'.format(nam_ob, yea_ob), 'aexp: {} {}'.format(nam_ex, yea_ex)], figsize = (18,7), cbar_range = (-3, 3), cb_label = var + ' anomaly (K)')
            figs.append(fig)

        figs = np.concatenate(figs)
        ctl.plot_pdfpages(cart_out + '{}_check_opa{}_analogs.pdf'.format(var, opa), figs)


sys.exit()

#####################################################################

# Selezione su spazio exp
solver_exp_dtr


pcs_ref = []
pcs_ref_dtr = []
for i in range(n_ref):
    pcs_ref.append(solver.projectField(solver_exp.eofs(eofscaling=2)[i], neofs=n_ref, eofscaling=0, weighted=True))
#     pcs_ref_dtr.append(solver_dtr.projectField(solver_exp_dtr.eofs(eofscaling=2)[i], neofs=n_ref, eofscaling=0, weighted=True))
Пример #4
0
            ax.contour(xi,
                       yi,
                       zi.reshape(xi.shape),
                       cmap=cm.get_cmap('Reds'),
                       label='post')

            ax.set_xlabel('EOF {}'.format(cou[0]))
            ax.set_ylabel('EOF {}'.format(cou[1]))

        ax.legend()
        plt.suptitle('Regime {} - {}'.format(reg, nomecoso))
        figs.append(fig)
        fig.savefig(cart_out +
                    'regime{}_pdf_proj{}.pdf'.format(reg, filter_tag))

ctl.plot_pdfpages(cart_out + 'ERApre1988_vs_post{}.pdf'.format(filter_tag),
                  figs)

sys.exit()

pcs_ref_1, dates1 = ctl.sel_time_range(results_ref['pcs'],
                                       results_ref['dates'],
                                       ctl.range_years(1957, 1987))
pcs_ref_2, dates2 = ctl.sel_time_range(results_ref['pcs'],
                                       results_ref['dates'],
                                       ctl.range_years(1988, 2018))
lab_ref_1, dates1 = ctl.sel_time_range(nulabs_ref, results_ref['dates'],
                                       ctl.range_years(1957, 1987))
lab_ref_2, dates2 = ctl.sel_time_range(nulabs_ref, results_ref['dates'],
                                       ctl.range_years(1988, 2018))

for reg in range(4):
Пример #5
0
                ax.bar(i, val, color=col, width=wi)
            else:
                ax.bar(i, val, color=col, width=wi, yerr=err, capsize=5)
            i += 0.7

        i += 0.3
        ax.bar(i,
               np.mean(allvalsdiff),
               color='grey',
               width=wi,
               yerr=np.std(allvalsdiff),
               capsize=5)
        ax.set_xticks([])
        ax.set_ylabel(tit + ' (difference: HR - LR)')
        #ax.set_xlabel('Eff. atm. resolution (km)')
        ax.axhline(0., color='grey', alpha=0.6)

        ax.set_title(regnam[reg])
        axes.append(ax)
    ctl.adjust_ax_scale(axes)

    fig.suptitle(tit)
    plt.subplots_adjust(top=0.9)
    fig = ctl.custom_legend(fig, colorscoup + ['grey'], model_coups + ['avg'])

    fig.savefig(cart_out + cos + '_{}_1vs1.pdf'.format(vtag))
    figures.append(fig)

ctl.plot_pdfpages(
    cart_out + 'allfigs_primacoup_{}_wresolution.pdf'.format(vtag), figures)
Пример #6
0
                               cb_label=None,
                               cbar_range=(-50, 50),
                               plot_anomalies=True,
                               n_color_levels=21,
                               draw_contour_lines=False,
                               n_lines=5,
                               color_percentiles=(0, 100),
                               bounding_lat=30,
                               plot_margins='EAT',
                               add_rectangles=None,
                               draw_grid=True,
                               plot_type='filled_contour',
                               verbose=False,
                               lw_contour=0.5)
    figs.append(fig)
ctl.plot_pdfpages(cart_out_orig + 'check_climate_mean_allmem.pdf', figs)

fig = plt.figure()
noreb = ctl.running_mean(resssp_noreb['EC-Earth3_r1i1p1f1']['pcs'][:, 0], 10)
reb = ctl.running_mean(resssp['EC-Earth3_r1i1p1f1']['pcs'][:, 0], 10)
plt.plot(noreb, label='rebase_ssp')
plt.plot(reb, label='rebase_hist')
plt.plot(reb - noreb, label='diff')
fig.savefig(cart_out_orig + 'check_first_eof_vs_rebase.pdf')

fig = plt.figure()
noreb = ctl.running_mean(resssp_noreb['EC-Earth3_r1i1p1f1']['pcs'][:300, 0],
                         10)
reb = ctl.running_mean(resssp['EC-Earth3_r1i1p1f1']['pcs'][:300, 0], 10)
plt.plot(noreb, label='rebase_ssp')
plt.plot(reb, label='rebase_hist')
Пример #7
0
                               bounding_lat=30,
                               cbar_range=[-50, 50],
                               draw_grid=True)
    all_figs_stat.append(fig)

# for mod1, mod2 in zip(mod_LO, mod_HI):
#     mod = '-'.join(mod2.split('-')[:-1])
#     diff = abs(mean_field_all[mod2] - mean_field_all['era']) < abs(mean_field_all[mod1] -mean_field_all['era'])
#     fig = ctl.plot_map_contour(diff, lat, lon, title = 'Mean field - better HR? - {}'.format(mod), visualization = projtype, bounding_lat = 30)
#     all_figs_mf.append(fig)
#
#     diff = abs(lowfrvar[mod2] - lowfrvar['era']) < abs(lowfrvar[mod1] -lowfrvar['era'])
#     fig = ctl.plot_map_contour(diff, lat, lon, title = 'Low fr var - better HR? - {}'.format(mod), visualization = projtype, bounding_lat = 30)
#     all_figs_lo.append(fig)
#
#     diff = abs(highfrvar[mod2] - highfrvar['era']) < abs(highfrvar[mod1] -highfrvar['era'])
#     fig = ctl.plot_map_contour(diff, lat, lon, title = 'High fr var - better HR? - {}'.format(mod), visualization = projtype, bounding_lat = 30)
#     all_figs_hi.append(fig)

filename = cart_out + 'all_figs_mf.pdf'
ctl.plot_pdfpages(filename, all_figs_mf)

filename = cart_out + 'all_figs_lowvar.pdf'
ctl.plot_pdfpages(filename, all_figs_lo)

filename = cart_out + 'all_figs_highvar.pdf'
ctl.plot_pdfpages(filename, all_figs_hi)

filename = cart_out + 'all_figs_stateddy.pdf'
ctl.plot_pdfpages(filename, all_figs_stat)
Пример #8
0
    #         ax = plt.subplot(1, 3, ind)
    #         allsigs = [np.mean(np.array([cos[ireg, ii] for cos in bootstri[mod][nam]])/normpers[mod]) for mod in model_names_all]
    #         allerrs = [np.std(np.array([cos[ireg, ii] for cos in bootstri[mod][nam]])/normpers[mod]) for mod in model_names_all]
    #         allp90 = [(np.percentile(np.array([cos[ireg, ii] for cos in bootstri[mod][nam]])/normpers[mod], 10), np.percentile(np.array([cos[ireg, ii] for cos in bootstri[mod][nam]])/normpers[mod], 90)) for mod in model_names_all]
    #         plt.scatter(list(range(nmods)), allsigs, c = colors, s = 20)
    #         for imod, sig, err, errp9, col in zip(range(nmods), allsigs, allerrs, allp90, colors):
    #             #plt.errorbar(imod, sig, yerr = err, ecolor = col, linestyle = 'None', elinewidth = 2, capsize = 10)
    #             plt.errorbar([imod], [sig], yerr = [[sig - errp9[0]], [errp9[1]-sig]], ecolor = col, linestyle = 'None', elinewidth = 2, capsize = 5)
    #         ax.set_title('trans {} -> {}'.format(regnam[ireg], regnam[ii]))
    #         axes_diff.append(ax)
    #
    #         ax.axhline(allsigs[-1], color = 'grey', alpha = 0.6)
    #         ax.axhline(allp90[-1][0], color = 'grey', alpha = 0.6, ls = '--')
    #         ax.axhline(allp90[-1][1], color = 'grey', alpha = 0.6, ls = '--')
    #
    #     fig.suptitle(alltits[nam], fontsize = titlefont)
    #     plt.subplots_adjust(top = 0.9)
    #
    #     ctl.custom_legend(fig, colors, model_names_all)
    #     figs.append(fig)
    #     allfigs.append(fig)
    #
    # ctl.adjust_ax_scale(axes_diff)
    #
    # for fig, ireg in zip(figs, range(numclus)):
    #     fig.savefig(cart_out + 'transonly_reg{}_bootstraps_v7.pdf'.format(ireg))

    ctl.plot_pdfpages(cart_out + 'all_bootplots_k{}.pdf'.format(numclus),
                      allfigs,
                      save_single_figs=False)

for area in ['EAT', 'PNA']:
    res_old, _ = ctl.load_wrtool('/data-hobbes/fabiano/WR_CMIP6/out_NEW_cmip6_hist_NDJFM_{}_4clus_4pcs_1964-2014_refCLUS_dtr_light.p'.format(area))
    figs = []
    for mod in okmods_mo:
        modmem = [ke for ke in res_old.keys() if mod in ke][0]
        lat = res_old[modmem]['lat']
        lon = res_old[modmem]['lon']
        newcoso = np.mean(climate_mean[mod], axis = 0).squeeze()
        oldcoso = np.mean(res_old[modmem]['climate_mean'], axis = 0)
        fig = ctl.plot_map_contour(newcoso-oldcoso, lat, lon, filename = None, visualization = 'standard', central_lat_lon = None, cmap = 'RdBu_r', title = mod, xlabel = None, ylabel = None, cb_label = None, cbar_range = (-60, 60), plot_anomalies = True, n_color_levels = 21, draw_contour_lines = False, n_lines = 5, color_percentiles = (0,100), bounding_lat = 30, plot_margins = area, add_rectangles = None, draw_grid = True, plot_type = 'filled_contour', verbose = False, lw_contour = 0.5)

        figs.append(fig)

    ctl.plot_pdfpages(cart_out + 'map_ensrebase_diff_{}.pdf'.format(area), figs)


for area in ['EAT', 'PNA']:
    res = dict()
    for mod in okmods_mo:
        res[mod+'_ensmean'] = dict()
        #climmean_area, _, _ = ctl.sel_area(lat, lon, climate_mean[(area, mod)], area)
        res[mod+'_ensmean']['climate_mean'] = climate_mean[mod].squeeze() #climmean_area
        res[mod+'_ensmean']['climate_mean_dates'] = climate_mean_dates[mod]

    pickle.dump([res, dict()], open(cart_out + 'dict_climate_mean_hist_{}.p'.format(area), 'wb'))

print('------------------------\n')
for mod in okmods_mo:
    gigi = all_mems[mod]
Пример #10
0
        # for mod, col in zip(all_res.keys(), colors):
        #     pats = [coso['patcor'][i] for coso in all_res[mod]]
        #     rmss = [coso['RMS'][i]/nsqr for coso in all_res[mod]]
        #     ax.scatter(pats, rmss, color = col, s = 5)

        ax.set_xlim(limitz[var][0], 1.0)
        ax.set_ylim(0., limitz[var][1])
        ax.tick_params(labelsize=14)
        plt.gca().invert_xaxis()
        ax.set_xlabel('Pattern correlation', fontsize = 18)
        ax.set_ylabel('RMS ({})'.format(varunits[var]), fontsize = 18)
        axes.append(ax)

    ctl.adjust_ax_scale(axes)

    plt.tight_layout()
    plt.subplots_adjust(top = 0.9)
    plt.suptitle('Regime composites of {}'.format(var), fontsize = 28)
    fig.savefig(cart_out + 'ellipse_plot_{}.pdf'.format(var))
    allfigs_compare.append(fig)

for var in ['temp', 'prec']:
    for i in range(4):
        for cos in ['base', 'stoc']:
            fig = ctl.plot_triple_sidebyside(area_compos[(var, cos)][i], area_compos[(var, 'ERA')][i], lat_area, lon_area, plot_margins = plotmarg, title = '{} - {} vs ERA - {}'.format(var, cos, pattnames[i]), stitle_1 = cos, stitle_2 = 'ERA', cb_label = varunits[var], cbar_range = (-4, 4))
            allfigs_compare.append(fig)
        fig = ctl.plot_triple_sidebyside(area_compos[(var, 'stoc')][i], area_compos[(var, 'base')][i], lat_area, lon_area, plot_margins = plotmarg, title = '{} - stoc vs base - {}'.format(var, pattnames[i]), stitle_1 = 'stoc', stitle_2 = 'base', cb_label = varunits[var], cbar_range = (-4, 4))
        allfigs_compare.append(fig)

ctl.plot_pdfpages(cart_out + 'compos_SPHINX_vs_ERA.pdf', allfigs_compare)
Пример #11
0
    # gregory
    try:
        #ax_greg.plot(glomeans[(ru, 'tas')][1]-pimean['tas'], glomeans[(ru, 'net_toa')][1], label = ru, color = col)
        ctl.gregplot_on_ax(ax_greg, glomeans[(ru, 'tas')][1]-pimean['tas'], glomeans[(ru, 'net_toa')][1], color = col, label = ru, calc_ERF = False, calc_ECS = False)
    except Exception as exc:
        print(ru, exc)
        pass

ax_greg.legend()
ax_greg.grid()

for ax in axs_glob:
    ax.legend()
    ax.grid()

ctl.plot_pdfpages(cart_out + 'bottino_glomeans.pdf', figs_glob, True, )

ax_greg.set_xlabel('Global mean tas (K)')
ax_greg.set_ylabel('Global net incoming TOA flux (W/m2)')
fig_greg.savefig(cart_out + 'bottino_gregory.pdf')

ax_greg.set_xlim((-0.5, 0.5))
ax_greg.set_ylim((-0.5, 0.5))
fig_greg.savefig(cart_out + 'bottino_gregory_pizoom.pdf')


sys.exit()

# var_map_200 = 'clt pr tas rlut uas'.split()  # plot last 200 mean map, stddev, low/high var wrt pi
#
# allcopls = ['seamean', 'seastd', 'seap10', 'seap90']
Пример #12
0
    patcor = np.array([results[ex]['av_res'][reg] for ex in exps_all])
    xs = np.arange(len(patcor))

    ax.scatter(xs, patcor, c=colors_all, s=100)

    ax.set_title(patnames[reg])
    ax.set_xticks([])
    axes.append(ax)
ctl.adjust_ax_scale(axes)
fig.suptitle('Av. persistence')
ctl.custom_legend(fig, colors_all, exps_all)
fig.savefig(cart_out + 'persistence.pdf')
figs.append(fig)

ctl.plot_pdfpages(cart_out + 'all_metrics.pdf', figs)

all_figures = []
for ex in exps_all:
    patt = results[ex]['cluspattern_area']
    if ex != 'ERA': patt = patt / gg
    patt_ref = results_ref['cluspattern_area']
    lat_ref = results[ex]['lat_area']
    lon_ref = results[ex]['lon_area']
    figs = ctl.plot_multimap_contour(patt,
                                     lat_ref,
                                     lon_ref,
                                     None,
                                     visualization='nearside',
                                     central_lat_lon=(70, -20),
                                     cmap='RdBu_r',
            ax = fig.add_subplot(2, 2, reg + 1)
            cosi = []
            for tip, col in zip(alltips, colorz):
                seasfr, yr = ctl.calc_seasonal_clus_freq(
                    resdict[tip][mem]['labels'], resdict[tip][mem]['dates'],
                    numclus)
                seasfreq[(tip, mem, reg)] = seasfr[reg, :]
                seas1 = np.array(ctl.running_mean(seasfr[reg, :], 20))
                runfreq[(tip, mem, reg)] = seas1
                ax.plot(yr, seas1, label=tip, color=col)
            ax.set_title(reg_names_area[area][reg])
            ax.legend()
        fig.suptitle(mem)
        figs.append(fig)

    ctl.plot_pdfpages(cart_out + 'check_models_refit_{}.pdf'.format(area),
                      figs)

    okmods = [mod for mod in okmods if 'EC-Earth3' not in mod]
    okmods.append('EC-Earth3_r1i1p1f1')

    fig = plt.figure(figsize=(16, 12))
    for reg in range(4):
        ax = fig.add_subplot(2, 2, reg + 1)
        for tip, col in zip(alltips, colorz):
            cosi = [runfreq[(tip, mem, reg)] for mem in okmods]
            coso = np.mean(cosi, axis=0)
            runfreq[(tip, reg)] = coso
            coserr = np.std(cosi, axis=0)
            ax.fill_between(yr,
                            coso - coserr,
                            coso + coserr,
Пример #14
0
                                   lw_contour=0.5)

        figs.append(fig)

        gigi = sspcoso - histcoso
        gogo, _, _ = ctl.sel_area(lat, lon, gigi, area)

        diff = ref_solver.projectField(gogo,
                                       neofs=4,
                                       eofscaling=0,
                                       weighted=True)
        stri = 4 * '{:7.2f}' + '\n'
        cosi = [ctl.cosine(diff, cen) for cen in results_ref['centroids']]
        print(stri.format(*cosi))

    ctl.plot_pdfpages(cart_out_orig + 'map_rebase_diff_{}.pdf'.format(area),
                      figs)

    bau = results_hist[mod]['var_dtr']
    bauda = np.arange(1965, 2015)
    gigi = results_ssp[mod]['var_dtr']
    gigida = np.arange(2015, 2100)
    fig = plt.figure()
    plt.plot(bauda, bau)
    plt.plot(bauda,
             np.polyval(results_hist[mod]['coeffs_dtr'], bauda),
             linestyle='--')
    plt.plot(gigida, gigi)
    plt.plot(gigida,
             np.polyval(results_ssp[mod]['coeffs_dtr'], gigida),
             linestyle='--')
    fig.savefig(cart_out_orig + 'vardtr_check.pdf')
Пример #15
0
    fig = plt.figure(figsize = (16, 12))
    ind = 0
    axes = []
    for reg in range(4):
        ind += 1
        ax = plt.subplot(2, 2, ind)

        allvals = np.array([all_mod_stats[(nam, mod, reg)] for mod in model_names])
        #ax.bar(np.arange(len(model_names)), allvals, color = colors)
        #ax.scatter(np.arange(len(model_names)), allvals, color = 'grey', marker = 'x', s = 200)
        for res, val, col, mark in zip(resolution, allvals, colors, sym_all):
            ax.scatter(res, val, color = col, marker = mark, s = 100, linewidth = 3)

        ax.axhline(ERA_ref_thresholds[(nam, 60, reg, 50)], color = 'grey', alpha = 0.6)
        ax.axhline(ERA_ref_thresholds[(nam, 60, reg, 10)], color = 'grey', alpha = 0.6, linestyle = '--')
        ax.axhline(ERA_ref_thresholds[(nam, 60, reg, 90)], color = 'grey', alpha = 0.6, linestyle = '--')
        ax.axhline(ERA_ref_thresholds[(nam, 60, reg, 1)], color = 'grey', alpha = 0.6, linestyle = ':')
        ax.axhline(ERA_ref_thresholds[(nam, 60, reg, 99)], color = 'grey', alpha = 0.6, linestyle = ':')

        ax.set_title('Reg {}'.format(reg))
        axes.append(ax)
    ctl.adjust_ax_scale(axes)

    fig.suptitle(tit)
    plt.subplots_adjust(top = 0.9)
    fig = ctl.custom_legend(fig, colors, model_names)
    fig.savefig(cart_out + '_'.join(nam.split())+'_models_primacoup_{}_wresolution.pdf'.format(tag))
    allfigs.append(fig)

ctl.plot_pdfpages(cart_out + 'allstats_models_primacoup_{}.pdf'.format(tag), allfigs, save_single_figs = False)
Пример #16
0
                seas20 = np.array(
                    ctl.running_mean(
                        np.concatenate([
                            seasfreq[('hist', mem, reg)],
                            seasfreq[(ssp, mem, reg)]
                        ]), 20))
                ax.plot(yr, seas20, color=col, linewidth=2)

            ax.set_title(reg_names_area[area][reg])
            ax.axvline(2015, color='lightslategray', linewidth=0.2)

        ctl.custom_legend(fig, colsim[1:], allsims[1:], ncol=4)
        fig.suptitle(mem)
        allmemfig.append(fig)
    ctl.plot_pdfpages(cart_out + 'allmods_freq20_{}.pdf'.format(area),
                      allmemfig,
                      save_single_figs=False)
    plt.close('all')

    fig = plt.figure(figsize=(16, 12))
    for reg in range(4):
        ax = fig.add_subplot(2, 2, reg + 1)
        for col, ssp in zip(colsim[1:], allssps):
            coso = runfreq[(ssp, 'lanc20', reg)]
            coserr = runfreq[(ssp, 'lanc20err', reg)]
            ax.fill_between(yr,
                            coso - coserr,
                            coso + coserr,
                            color=col,
                            alpha=0.15)
            ax.plot(yr, coso, label=ssp, color=col, linewidth=2)
Пример #17
0
for per in periods:
    for cos in ['base', 'stoc', 'diff']:
        trenddict[('toa_net', per, cos)] = -(trenddict[('rsus', per, cos)] +
                                             trenddict[('rlut', per, cos)])

for varnam in allvars + ['toa_net']:
    figs = []
    for per in periods:
        for cos in ['base', 'stoc', 'diff']:
            if varnam == 'tas':
                cbar_range = (-2., 2.)
            elif 'cc' in varnam:
                cbar_range = (-0.09, 0.09)
            else:
                cbar_range = (-20., 20.)
            if cos == 'diff' and cbar_range is not None:
                cbar_range = (cbar_range[0] / 4., cbar_range[1] / 4.)
            fig = ctl.plot_map_contour(trenddict[(varnam, per, cos)],
                                       lat,
                                       lon,
                                       visualization='Robinson',
                                       central_lat_lon=(0., 180.),
                                       title='{} - {} - {}'.format(
                                           varnam, per, cos),
                                       cbar_range=cbar_range)
            figs.append(fig)

    ctl.plot_pdfpages(cart_out + 'trend_patterns_v2_{}.pdf'.format(varnam),
                      figs)
Пример #18
0
    std_trm = np.std(all_trm, axis=0)

    ax = fig.add_subplot(121)
    gigi = ax.imshow(mean_trm, norm=LogNorm(vmin=0.01, vmax=1.0))
    ax.xaxis.tick_top()
    ax.set_xticks(np.arange(numclus), minor=False)
    ax.set_xticklabels(pattnames, size='small')
    ax.set_yticks(np.arange(numclus), minor=False)
    ax.set_yticklabels(pattnames, size='small')
    cb = plt.colorbar(gigi, orientation='horizontal')

    ax = fig.add_subplot(122)
    gigi = ax.imshow(std_trm / mean_trm, vmin=0., vmax=0.5)
    #ax.set_title('Ratio std dev/ mean')
    cb = plt.colorbar(gigi, orientation='horizontal')

    ax.xaxis.tick_top()
    ax.set_xticks(np.arange(numclus), minor=False)
    ax.set_xticklabels(pattnames, size='small')
    ax.set_yticks(np.arange(numclus), minor=False)
    ax.set_yticklabels(pattnames, size='small')

    fig.savefig(
        cart_out +
        'Transmatrix_{}_{}yr_{}.pdf'.format(mod, n_choice, n_bootstrap))
    all_figures.append(fig)

ctl.plot_pdfpages(
    cart_out + 'SPHINX_variability_{}yr_{}.pdf'.format(n_choice, n_bootstrap),
    all_figures)
Пример #19
0
                                   era_lon,
                                   title=fluxlongnames[flun] +
                                   ' - {} {} {}'.format(exp, year, seas))
        figures_era.append(fig)

    total = np.sum([era_fluxes_maps[(seas, flun)] for flun in fluxnames],
                   axis=0)
    fig = ctl.plot_map_contour(total,
                               era_lat,
                               era_lon,
                               title='Total meridional flux - {} {} {}'.format(
                                   exp, year, seas))
    figures_era.append(fig)

file_era = cart_out + 'ERA_reference_fluxes_1988.pdf'
ctl.plot_pdfpages(file_era, figures_era)

ally = [1975, 2000, 2025, 2050, 2075, 2090, 2100]
# exp = 'lcs0'
freq = '6hrs'
# year = 1988
# Ora per gli exps
#cart_in = '/data-hobbes/fabiano/SPHINX/heat_flux/lcs0_1988_6hrs/'
cart_in = '/data-hobbes/fabiano/SPHINX/heat_flux/data_6hrs/'

allfluxes = dict()
# for exp in ['lcb0', 'lcs0']:
#     for year in [1975, 2000, 2025, 2050, 2075, 2090, 2100]:
for exp in ['las1']:
    for year in [1988]:
        pressurefile = cart_in + '{}_day_{}_ps.nc'.format(exp, year)
Пример #20
0
    koze = res_all[ke]
    if 'ua' in ke:
        cbar_range = (-15, 15.)
        cb_label = 'u (m/s)'
    elif ke == 'zg_full':
        cbar_range = (-250, 250.)
        cb_label = 'zg (m)'
    else:
        cbar_range = (-160, 160.)
        cb_label = 'zg (m)'

    fix_subplots_shape = (2, 2)
    if len(koze['cluspattern']) == 5: fix_subplots_shape = (2, 3)

    patts = koze['cluspattern']
    if ke == 'zg_full':
        patts = patts - np.mean(koze['cluspattern_area'])
    fig = cd.plot_regimes(koze['lat'],
                          koze['lon'],
                          patts,
                          None,
                          cbar_range=cbar_range,
                          cb_label=cb_label,
                          reg_freq=koze['freq_clus'],
                          plot_type='pcolormesh')
    fig[0].suptitle(ke)
    figs.append(fig[0])

#figs = np.concatenate(figs)
ctl.plot_pdfpages(cart_out + 'test_regimes_pattern.pdf', figs)
Пример #21
0
                               cbar_range=cbar_range,
                               n_color_levels=11,
                               n_lines=11,
                               draw_contour_lines=True,
                               draw_grid=True,
                               cb_label='Trend (m/year)',
                               title=tit)
    allfigs.append(fig)
    trend_yea.append(m)
    intrc_yea.append(c)

trend_yea = np.stack(trend_yea)
intrc_yea = np.stack(intrc_yea)

ctl.plot_pdfpages(
    cart_out + '{}_trend_{}-{}_NDJFM_alongseason.pdf'.format(
        modnam, yearange[0], yearange[1]), allfigs)

##############################################################################

sys.exit()

nya = 30  # number of years for running mean

climate_mean_dict = dict()

for num in [1, 5, 10, 15, 20]:
    climate_mean, dates_climate_mean = ctl.trend_daily_climat(var,
                                                              dates,
                                                              window_days=num,
                                                              window_years=nya)
Пример #22
0
                pdfok = pdf(vsel)
                pdfok /= np.sum(pdfok)

                jlimin = np.percentile(jspedserie, 10, axis = 0)
                jlimax = np.percentile(jspedserie, 90, axis = 0)
                ax2.fill_between(vsel, jlimin, jlimax, color = col, alpha = 0.2)
                ax2.plot(vsel, pdfok, label = ru, color = col, linewidth = 3)

        if axlu is not None:
            axlu.grid()
            axlu.set_xlabel('Latitude')
            axlu.set_title(area)
            axlu.legend()

        ax1.grid()
        ax2.grid()
        ax1.set_xlabel('Latitude')
        ax2.set_xlabel('u wind (m/s)')
        ax1.set_title('Jet latitude index')
        ax2.set_title('Jet speed')
        ax1.legend()
        ax2.legend()
        fig.suptitle('{} - {}'.format(area, season))
        #fig.savefig(cart_out + 'jlinspeed_bottino_{}{}.pdf'.format(area, tip))
        figs.append(fig)

    ctl.plot_pdfpages(cart_out + 'jlinspeed_bottinoall{}.pdf'.format(tip), figs)

    figN.savefig(cart_out + 'jlibott_allareas_N{}.pdf'.format(tip))
    figS.savefig(cart_out + 'jlibott_allareas_S{}.pdf'.format(tip))
Пример #23
0
    cosa = np.mean(temp_anoms[labok, ...], axis=0)
    compos['temp_filt'].append(cosa)

    fig = ctl.plot_map_contour(
        cosa,
        coords_temp['lat'],
        coords_temp['lon'],
        title='Temp anom - regime {} - filt 5 days'.format(reg),
        plot_margins=(-120, 120, 20, 90),
        cbar_range=(-5, 5))
    allfigs.append(fig)

    labok = (oklabels == reg) & (okleneve > 5)
    labok = oklabels == reg
    cosa = np.mean(prec_anoms[labok, ...], axis=0)
    compos['prec_filt'].append(cosa)

    fig = ctl.plot_map_contour(
        cosa,
        coords_prec['lat'],
        coords_prec['lon'],
        title='Prec anom - regime {} - filt 5 days'.format(reg),
        plot_margins=(-120, 120, 20, 90),
        cbar_range=(-5, 5),
        cmap='RdBu')
    allfigs.append(fig)

ctl.plot_pdfpages(cart_out + 'temprec_composites_wERA.pdf', allfigs)

pickle.dump(compos, open(cart_out + 'out_composites_ERA_precERA.p', 'wb'))
Пример #24
0
        fig = plt.figure()
        plt.title('{} - base vs stoc wdiff - {}'.format(varnam, season))
        for i, cos in enumerate(['base', 'stoc']):
            mea = fields[(varnam, cos + '_mean', 'diff', season, 'zonal_wcos')]
            std = fields[(varnam, cos + '_std', 'diff', season, 'zonal_wcos')]
            plt.fill_between(lat,
                             mea - std,
                             mea + std,
                             color=colors[i],
                             alpha=0.2)
            plt.plot(lat,
                     mea,
                     label='w. diff post-pre - {}'.format(cos),
                     color=colors[i])
        plt.axhline(0., color='grey')
        plt.legend()
        figures.append(fig)
        figures_dict[(varnam, season, 'wdiff')] = fig

    filefig = cart_out + 'figures_SPHINX_reloaded_{}.pdf'.format(season)
    ctl.plot_pdfpages(filefig, figures, save_single_figs=True)

# for season in ['year', 'DJF', 'JJA']:
#     figures = []
#     for varnam in varlist + ['surf_rad_bal', 'surf_tot_bal']:
#         fig = plt.figure()
#         plt.title('{} - {}'.format(varnam, season))
#         for cos, col in zip(['base', 'stoc'], colors):
#             plt.plot(lat, fields[(varnam, cos + '_mean', 'pre', season, 'zonal')], label = cos+' (pre)', color = col, linestyle = ':')
#             plt.plot(lat, fields[(varnam, cos + '_mean', 'post', season, 'zonal')], label = cos+' (post)', color = col, linestyle = '-')
Пример #25
0
figures = []
for bandnam, band in zip(names, lat_bands):
    axes = []
    for coso in ['base', 'stoc']:
        fig = plt.figure()
        ax = fig.add_subplot(111)
        ax.set_title('{} - {}'.format(coso, bandnam))
        for th in temp_horiz:
            ax.plot(np.arange(12),
                    band_clim[(coso, 'tas', th, band)],
                    label=th)
        ax.legend()
        figures.append(fig)
        axes.append(ax)

    ctl.adjust_ax_scale(axes, sel_axis='both')

    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.set_title('Diff stoc-base - {}'.format(bandnam))
    for th in temp_horiz:
        ax.plot(np.arange(12),
                band_clim[('stoc', 'tas', th, band)] -
                band_clim[('base', 'tas', th, band)],
                label=th)
    ax.legend()
    ax.grid()
    figures.append(fig)

ctl.plot_pdfpages(cart_out + 'seas_cycle_all.pdf', figures)
Пример #26
0
    # plt.yscale('log')
    # plt.ylim(1.e5, 1.e3)
    hrko1 = np.mean(hrko_diff[:10, :], axis=0)
    hrko2 = np.mean(hrko_diff[10:20, :], axis=0)
    hrko3 = np.mean(hrko_diff[20:, :], axis=0)
    lrko1 = np.mean(lrko_diff[:10, :], axis=0)
    lrko2 = np.mean(lrko_diff[10:20, :], axis=0)
    lrko3 = np.mean(lrko_diff[20:, :], axis=0)
    colok = [cols[0], cols[15], cols[-1]]
    fig = plt.figure()
    plt.plot(hrko1, levs, linestyle='-', color=colok[0], label='days 1-10')
    plt.plot(hrko2, levs, linestyle='-', color=colok[1], label='days 10-20')
    plt.plot(hrko3, levs, linestyle='-', color=colok[2], label='days 20-30')
    plt.plot(lrko1, levs, linestyle='--', color=colok[0])
    plt.plot(lrko2, levs, linestyle='--', color=colok[1])
    plt.plot(lrko3, levs, linestyle='--', color=colok[2])
    plt.yscale('log')
    plt.ylim(1.e5, 1.e3)
    plt.grid()
    plt.legend()
    plt.xlabel('daily tendency')
    plt.title(var)
    plt.savefig(cart + '{}_profs_1mo_799-cntrl.pdf'.format(var))
    figs_prof.append(fig)

# ctl.plot_pdfpages(cart + 'day_facet_1m.pdf', figs_facet+figs_facet_3d)
# ctl.plot_pdfpages(cart + 'day_ovmol_2m.pdf', figs_ovmol)
ctl.plot_pdfpages(cart + 'day_prof_1m.pdf', figs_prof)

plt.close('all')
Пример #27
0
#plt.plot(era_lat, mpefzon3, label = 'PE - daily more lev')
#plt.plot(lat, mpefzon, label = 'PE - sphinx daily')
plt.plot(era_lat, era_mpef_Febzon, label = 'PE era ref', linestyle = ':')
plt.legend()
figures.append(fig)

fig = plt.figure()
plt.title('ERA calc - February 1988 - LH diffs')
#plt.plot(era_lat, mlhfzon1, label = 'LH - daily')
plt.plot(era_lat, mlhfzon2, label = 'LH - 6hrs')
plt.plot(era_lat, mlhfzon2p0, label = 'LH - 6hrs - int_p0')
plt.plot(era_lat, mlhfzon2p0_recalc, label = 'LH - hfc recalc')
#plt.plot(era_lat, mlhfzon3, label = 'LH - daily more lev')
#plt.plot(lat, mlhfzon, label = 'LH - sphinx daily')
plt.plot(era_lat, era_mlhf_Febzon, label = 'LH era ref', linestyle = ':')
plt.legend()
figures.append(fig)


# fig = ctl.plot_double_sidebyside(era_mshf_Feb, mshfint, [era_lat, lat], [era_lon, lon], title = 'era_ref vs sphinx', use_different_grids = True)
# figures.append(fig)
# fig = ctl.plot_double_sidebyside(era_mshf_Feb, mshfint2, era_lat, era_lon, title = 'era_ref vs era 6 hrs')
# figures.append(fig)
# fig = ctl.plot_double_sidebyside(mshfint2, mshfint2p0, era_lat, era_lon, title = 'era 6 hrs vs era 6 hrs int p0')
# figures.append(fig)

ctl.plot_pdfpages(figure_file2, figures)
figures_cross = np.array(figures_cross)
figures_cross = figures_cross[[0,4,8,1,5,9,2,6,10,3,7,11]]
ctl.plot_pdfpages(figure_file_cross, figures_cross)
Пример #28
0
            ax = fig.add_subplot(2, 2, reg + 1)
            cosi = []
            for mem in okmods:
                seasfr, yr = ctl.calc_seasonal_clus_freq(
                    resdict[tip][mem]['labels'], resdict[tip][mem]['dates'],
                    numclus)
                seasfreq[(tip, mem, reg)] = seasfr[reg, :]
                seas1 = np.array(ctl.running_mean(seasfr[reg, :], 20))
                runfreq[(tip, mem, reg)] = seas1
                ax.plot(yr, seas1, label=tip, color=col)
            ax.set_title(reg_names_area[area][reg])
            #ax.legend()
        fig.suptitle(tip)
        figs.append(fig)

    ctl.plot_pdfpages(cart_out + 'check_single_members_{}.pdf'.format(area),
                      figs)

    fig = plt.figure(figsize=(16, 12))
    for reg in range(4):
        ax = fig.add_subplot(2, 2, reg + 1)
        for tip, col in zip(alltips, colorz):
            okmods = resdict[tip].keys()
            cosi = [runfreq[(tip, mem, reg)] for mem in okmods]
            coso = np.mean(cosi, axis=0)
            runfreq[(tip, reg)] = coso
            coserr = np.std(cosi, axis=0) / np.sqrt(len(okmods) - 1)
            ax.fill_between(yr,
                            coso - coserr,
                            coso + coserr,
                            color=col,
                            alpha=0.3)
Пример #29
0
        #fig.savefig(cart + 'scatter_{}_{}.pdf'.format(season, area))
        figs_scatter.append(fig)

        # #### regime clouds
        # clouds = dict()
        # clouds['reference'] = koze_ref
        # clouds['pos'] = coso_pos
        # clouds['neg'] = coso_neg
        #
        # xlims = (np.percentile(clouds['reference']['pcs'], 1), np.percentile(clouds['reference']['pcs'], 99))
        #
        # fig = ctl.plot_multimodel_regime_pdfs(clouds, model_names = ['reference', 'pos', 'neg'], eof_proj = [(0,1), (2,3)], reference = 'reference', check_for_eofs = False, colors = ['black', 'forestgreen', 'indianred'], eof_axis_lim = xlims)
        # fig.suptitle(area + ' - ' + season)
        # figs_clouds.append(fig)

ctl.plot_pdfpages(cart + 'scatter_regimes_v90.pdf', figs_scatter)
ctl.plot_pdfpages(cart + 'clouds_regimes_v90.pdf', figs_clouds)

pickle.dump(reg_events, open(cart + 'regimes_masked_v90.p', 'wb'))

pickle.dump([ttests, deltadist_all], open(cart + 'delta_pcs_v90.p', 'wb'))

ofidpc.close()

ofidpc = open(cart + 'rel_delta_pcs_latex.txt', 'w')

from matplotlib import colors as mcolors

colo = '#d73027 #f46d43 #fdae61 #fee090 #ffffff #e0f3f8 #abd9e9 #74add1 #4575b4'
colo = colo.split()
colo = colo[::-1]
Пример #30
0
            add_vector_field=[
                ug[levs[i + 1]] - ug[lev], vg[levs[i + 1]] - vg[lev]
            ],
            title='vertical wind shear - lev {} hPa'.format(lev),
            plot_anomalies=False,
            plot_margins=area,
            quiver_scale=quiver_scale,
            vec_every=vec_every,
            plot_type='pcolormesh',
            figsize=figsize)
        figs.append(fig)

        fig = ctl.plot_map_contour(ta_[i],
                                   lat,
                                   lon,
                                   add_vector_field=[
                                       ug[levs[i + 1]] - ug[lev] - ut_lev[lev],
                                       vg[levs[i + 1]] - vg[lev] - vt_lev[lev]
                                   ],
                                   title='residual - lev {} hPa'.format(lev),
                                   plot_anomalies=False,
                                   plot_margins=area,
                                   quiver_scale=quiver_scale,
                                   vec_every=vec_every,
                                   plot_type='pcolormesh',
                                   figsize=figsize)
        figs.append(fig)

ctl.plot_pdfpages(cart_out + 'geostrophy_exe.pdf', figs)
plt.close('all')