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)
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)
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))
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):
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)
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')
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)
# 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]
# 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)
# 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']
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,
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')
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)
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)
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)
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)
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)
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)
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)
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))
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'))
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 = '-')
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)
# 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')
#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)
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)
#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]
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')