numask = ctl.regrid_dataset(okpino, lats, lons) okmask = np.array(numask['okmask']).astype(bool) rad_flds['net_srf'] = rad_flds['chflux'] for var in 'clwfl cqflux cswfl'.split(): rad_flds['net_srf'] += rad_flds[var] #ctl.plot_multimap_contour(rad_flds['net_srf'], lats, lons, plot_anomalies=False, color_percentiles=(1,99), title='SRF_NET', cmap='viridis', plot_type='pcolormesh') ok_coso = np.mean(rad_flds['net_srf'][1:], axis=0) avfld[(expnam, 'net_srf')] = ok_coso ctl.plot_map_contour(np.mean(rad_flds['net_srf'][1:], axis=0), lats, lons, plot_anomalies=True, color_percentiles=(1, 99), title='SRF_NET', cmap='viridis', plot_type='pcolormesh', filename=cart + 'map_net_srf.pdf') print('NET SRF', ctl.global_mean(ok_coso, lats)) ## over land and ocean ok_coso = avfld[(expnam, 'net_srf')] ok_land = ctl.global_mean(ok_coso, lats, okmask) ok_ocean = ctl.global_mean(ok_coso, lats, ~okmask) print('NET SRF - LAND', ok_land) print('NET SRF - OCEAN', ok_ocean) for var in 'osrtotc olrtotc'.split():
pears, pval = stats.pearsonr(frok / gw, tastr / gw) corr_map[la, lo] = pears pval_map[la, lo] = pval corrmaps[('corr', area, reg)] = corr_map corrmaps[('pval', area, reg)] = pval_map fnam = cart_out_wcmip5 + 'tas_corrmap_{}_{}_{}.pdf'.format( area, reg, seas) ctl.plot_map_contour(corr_map, lat, lon, filename=fnam, add_hatching=pval_map <= 0.05, cbar_range=(-1, 1), cb_label='Correlation', title='area: {}, regime: {}, seas: {}'.format( area, reg_names_area[area][reg], seas), draw_grid=True) fnam = cart_out_wcmip5 + 'tas_pvalmap_{}_{}_{}.pdf'.format( area, reg, seas) ctl.plot_map_contour(pval_map, lat, lon, filename=fnam, cbar_range=(0., 0.1), plot_anomalies=False, extend_opt='neither', draw_grid=True,
# fig.legend(handles, labels, loc='lower center', ncol = 7, fontsize = 10) # fig.savefig(cart_out + finam + '_area{}_modres.pdf'.format(anam)) # # sys.exit() blat = 0 projcos = 'nearside' clatlo = (70, -20) filename = cart_out + 'mean_field_era_zg500.pdf' fig = ctl.plot_map_contour(mean_field, lat, lon, title='', filename=filename, visualization=projcos, bounding_lat=0, plot_anomalies=False, cbar_range=[5000., 5800.], draw_grid=True, cb_label='m', central_lat_lon=clatlo) all_figs_mf.append(fig) filename = cart_out + 'low_fr_var_era_zg500.pdf' fig = ctl.plot_map_contour(lowfr_variab, lat, lon, title='', filename=filename, visualization=projcos, bounding_lat=0,
plot_type='filled_contour', verbose=False, lw_contour=0.5) ctl.plot_map_contour(sspcoso - histcoso, lat, lon, filename=cart_out_orig + 'mapdiff_rebase_diff.pdf', visualization='standard', central_lat_lon=None, cmap='RdBu_r', title=None, xlabel=None, ylabel=None, cb_label=None, cbar_range=None, 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 = [] for mod in reshist.keys(): histbase = np.mean(reshist[mod]['climate_mean'], axis=0)
plt.title('Meridional heat fluxes - {} {} {}'.format(exp, year, seas)) for flun in fluxnames: plt.plot(era_lat, era_fluxes_zonal[(seas, flun)], label=shortnam[flun]) total = np.sum([era_fluxes_zonal[(seas, flun)] for flun in fluxnames], axis=0) plt.plot(era_lat, total, label='Total') plt.legend() plt.grid() plt.xlabel('Latitude') plt.ylabel('Integrated Net Heat Flux (W)') figures_era.append(fig) for flun in fluxnames: fig = ctl.plot_map_contour(era_fluxes_maps[(seas, flun)], era_lat, 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)
for an, th in zip(year_thres_stoc, thress): mask = abs(years_pdh.year - an) <= 10 yas_s.append(np.mean(yearly_anom_s[mask, ...], axis=0)) yas_b = np.stack(yas_b) yas_s = np.stack(yas_s) (cmin, cmax) = ctl.get_cbar_range(yas_b, symmetrical=True) for okanom, an, th in zip(yas_b, year_thres_base, thress): nomfi = cart + 'map_anom_{}_th{}_base.pdf'.format(an, int(10 * th)) tit = 'Year {} - 20yr ave anomaly - +{:3.1f} K globally'.format(an, th) ctl.plot_map_contour(okanom, lat, lon, filename=nomfi, visualization='polar', central_lat_lon=(30, 0), cbar_range=(cmin, cmax), title=tit, cb_label='Temp. anomaly (K)') for okanom, an, th in zip(yas_s, year_thres_stoc, thress): tit = 'Year {} - 20yr averaged anomaly - +{:3.1f} K globally'.format( an, th) nomfi = cart + 'map_anom_{}_th{}_stoc.pdf'.format(an, int(10 * th)) ctl.plot_map_contour(okanom, lat, lon, filename=nomfi, visualization='polar', central_lat_lon=(30, 0),
filok = 'bf.5day.daily.daily_mean.ERA.ERA.1958-2017.nc' blocked_days, datacoords, aux_info = ctl.readxDncfield(cart_bloc + filok) dates_block = datacoords['dates'] lat = datacoords['lat'] lon = datacoords['lon'] WR_index = results_refEOF[mod]['labels'] WR_dates = results_refEOF[mod]['dates'] blok, wri, datcom = ctl.extract_common_dates(dates_block, WR_dates, blocked_days, WR_index) ERA_map_full = np.mean(blok, axis=0) ctl.plot_map_contour(ERA_map_full, lat, lon, visualization='Nstereo', plot_anomalies=False, filename=cart_out_maps + 'map_full_ERA.pdf') def func_sum(blok_ind, reg_ind): alsums = [] for reg in range(4): blokok = blok_ind[reg_ind == reg] okmap = np.mean(blokok, axis=0) alsums.append(np.mean(okmap)) return np.array(alsums) blok_anom = blok - ERA_map_full
# num_members[mod] = len(climmeans) # # pickle.dump([climate_mean, climate_mean_dates, climate_std, num_members], open(cart_out + 'climate_mean_hist_p2.p', 'wb')) climate_mean, climate_mean_dates, climate_std, num_members = pickle.load(open(cart_out + 'climate_mean_hist_p2.p', 'rb')) 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'))
subtitles=oktit, add_hatching=okha, cmap=cmap, n_color_levels=17, hatch_styles=['////', '', '']) for ru in ['pi'] + allru2[-2:]: var_trend = trendz[(var, ru)] var_hatch = trendz[(var, ru, 'pval')] < 0.05 ctl.plot_map_contour(var_trend, coso.lat, coso.lon, filename=cart_out + var + '_trend_{}.pdf'.format(ru), figsize=(16, 9), cbar_range=(c5, c95), color_norm=divnorm, add_hatching=var_hatch, cmap=cmap, n_color_levels=17, hatch_styles=['///', '', '']) #### Now fig with ssp585 and all botts okfi = [trendz[(var, ru)] for ru in ['ssp585'] + allru[1:]] okha = [trendz[(var, ru, 'pval')] < 0.05 for ru in ['ssp585'] + allru[1:]] oktit = ['ssp585'] + allru[1:] ctl.plot_multimap_contour(okfi, coso.lat, coso.lon, filename=cart_out + var +
plt.plot(annme, stoc_glob - base_glob, label='diff stoc-base') plt.xlabel('Year') plt.ylabel('Rad. forcing (W/m^2)') plt.grid() plt.legend() figures.append(fig) for ann in annme: base = radclim[('base', 'map', varna, ann)] stoc = radclim[('stoc', 'map', varna, ann)] print(base.shape, stoc.shape) figures.append( ctl.plot_map_contour( stoc - base, lat, lon, title=titlevar[varna] + ' (stoc-base diff): {}-{}'.format(ann - 5, ann + 5), cb_label='Forcing (W/m^2)', cbar_range=(-20., 20.))) mino = np.min([radclim[('stoc', 'zonal', varna, ann)] for ann in annme]) maxo = np.max([radclim[('base', 'zonal', varna, ann)] for ann in annme]) mino = mino - 0.1 * abs(maxo - mino) maxo = maxo + 0.1 * abs(maxo - mino) mino_diff = 10.1 * np.min([ radclim[('stoc', 'zonal', varna, ann)] - radclim[('base', 'zonal', varna, ann)] for ann in annme ]) maxo_diff = 10.1 * np.max([ radclim[('stoc', 'zonal', varna, ann)] -
plt.xlabel('Year') plt.ylabel('Cloud cover') plt.grid() plt.legend() figures.append(fig) for ann in annme: print(varna, ann) base = radclim[('labm', 'map', varna, ann)] stoc = radclim[('lasm', 'map', varna, ann)] print(base.shape, stoc.shape) figures.append( ctl.plot_map_contour( stoc - base, lat, lon, title=titlevar[varna] + ' (stoc-base diff): {}-{}'.format(ann - 5, ann + 5), cb_label='cloud cover')) #, cbar_range = (-20.,20.))) mino = np.min([radclim[('lasm', 'zonal', varna, ann)] for ann in annme]) maxo = np.max([radclim[('labm', 'zonal', varna, ann)] for ann in annme]) mino = mino - 0.1 * abs(maxo - mino) maxo = maxo + 0.1 * abs(maxo - mino) mino_diff = 10.1 * np.min([ radclim[('lasm', 'zonal', varna, ann)] - radclim[('labm', 'zonal', varna, ann)] for ann in annme ]) maxo_diff = 10.1 * np.max([ radclim[('lasm', 'zonal', varna, ann)] -
fix_subplots_shape=(3, 5), figsize=(18, 12), subtitles=allmods_MM, cb_label='m/year', verbose=True, draw_grid=True) filename = cart_out_orig + 'trend_anom_mmm_vs_hist.pdf' ctl.plot_map_contour(trendsanom[-1], lat, lon, filename, plot_anomalies=True, plot_margins=(-180, 180, 20, 90), cbar_range=(-1, 1), add_contour_field=meanfields[-1], figsize=(24, 12), cb_label='m/year', draw_grid=True, add_hatching=hatchs[-1], n_lines=8, add_contour_same_levels=False, add_contour_plot_anomalies=False) filename = cart_out_orig + 'trend_anom_mmm_vs_hist_EAT.pdf' ctl.plot_map_contour(trendsanom[-1], lat, lon, filename, plot_anomalies=True, visualization='nearside',
axis=0) tam = np.mean(ta_, axis=0) quiver_scale = 1000 vec_every = 10 figsize = (16, 8) figs = [] for i, lev in enumerate(levs): fig = ctl.plot_map_contour(zg_[i], lat, lon, add_vector_field=[u_[i], v_[i]], title='real winds - 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( zg_[i], lat, lon, add_vector_field=[ug[lev], vg[lev]], title='geostrophic winds - lev {} hPa'.format(lev), plot_anomalies=False, plot_margins=area, quiver_scale=quiver_scale,
plt.legend() plt.grid() plt.ylim(limits[('zonal', flun)]) plt.xlabel('Latitude') plt.ylabel('Integrated Net Heat Flux (W)') figures.append(fig) ctl.plot_pdfpages(figure_file, figures) figure_file = cart_out + 'maps_hfc_lcb0_vs_lcs0_NEW.pdf' figures = [] for flun in fluxnames: for ann in annme: data = fluxes_model[('lcs0', flun, seas, 'map', ann)] - fluxes_model[('lcb0', flun, seas, 'map', ann)] fig = ctl.plot_map_contour(data, lat, lon, title = 'stoc-base diff: {} - {}'.format(flun, ann), cb_label = 'W/m', cbar_range = limits[('map', flun)]) figures.append(fig) ctl.plot_pdfpages(figure_file, figures) figure_file = cart_out + 'cross_hfc_lcb0_vs_lcs0_NEW.pdf' figures = [] for flun in fluxnames: for ann in annme: data = fluxes_model[('lcs0', flun, seas, 'cross', ann)] - fluxes_model[('lcb0', flun, seas, 'cross', ann)] fig = ctl.plot_lat_crosssection(data, lat, level, title = 'stoc-base diff: {} - {}'.format(flun, ann), cb_label = 'W/m', cbar_range = limits[('cross', flun)]) figures.append(fig) ctl.plot_pdfpages(figure_file, figures)
ax.set_ylabel('m') fig.savefig( cart_out + 'global_{}_trend_{}-{}_DJF.pdf'.format(modnam, yearange[0], yearange[1])) ############## PLOT TREND MAPS ###################### m, c, merr, cerr = ctl.calc_trend_climatevar(years, var_set) ctl.plot_map_contour( m, lat, lon, plot_anomalies=True, cbar_range=cbar_range, n_color_levels=11, n_lines=11, draw_contour_lines=True, draw_grid=True, cb_label='Trend (m/year)', filename=cart_out + '{}_trend_{}-{}_DJF.pdf'.format(modnam, yearange[0], yearange[1])) var_set_notr = [] for ye, va, glo in zip(years, var_set, glob_mea): var_set_notr.append(va - glo) var_set_notr = np.stack(var_set_notr) m, c, merr, cerr = ctl.calc_trend_climatevar(years, var_set_notr) ctl.plot_map_contour(
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)
results_ref['dates'], dates_range=(dateprec[0], dateprec[-1])) allfigs = [] # Calculate and visualize composites. NO FILTERS compos = dict() compos['temp'] = [] compos['prec'] = [] for reg in range(kwar['numclus']): labok = results_ref['labels'] == reg cosa = np.mean(temp_anoms[labok, ...], axis=0) compos['temp'].append(cosa) fig = ctl.plot_map_contour(cosa, coords_temp['lat'], coords_temp['lon'], title='Temp anom - regime {}'.format(reg), plot_margins=(-120, 120, 20, 90), cbar_range=(-5, 5)) allfigs.append(fig) labok = oklabels == reg cosa = np.mean(prec_anoms[labok, ...], axis=0) compos['prec'].append(cosa) fig = ctl.plot_map_contour(cosa, coords_prec['lat'], coords_prec['lon'], title='Prec anom - regime {}'.format(reg), plot_margins=(-120, 120, 20, 90), cbar_range=(-5, 5), cmap='RdBu')
# mappeanom = [ma-ctl.global_mean(ma, coso.lat) for ma in mappe] # ctl.plot_multimap_contour(mappeanom, coso.lat, coso.lon, cmap = cmappa, plot_anomalies = True, cbar_range = [-10., 10.]) cmap = mcolors.LinearSegmentedColormap.from_list( 'bau', ['violet', 'white', 'lightgreen']) cmap.set_under('violet') cmap.set_over('lightgreen') if varnam == 'tas': print('entro tas') mappa = (equi - transient) / (equi - pimap) ctl.plot_map_contour(mappa, coso.lat, coso.lon, filename=cart_out + 'stabtransratio_{}_{}.pdf'.format(varnam, ru), plot_anomalies=True, cbar_range=ext_rel, cmap=cmap, cb_label='Fraction of residual warming') fig_ratio.append(mappa) print(len(fig_ratio)) # elif varnam == 'pr_rel': else: # cmap = cm.get_cmap('viridis').copy() # cmap.set_under('violet') # cmap.set_bad('lightslategray', alpha = 0.5) #mappa = (equi-transient)/(transient-pimap) mappa = (equi - transient) / (equi - pimap)