Пример #1
0
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():
Пример #2
0
                    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,
Пример #3
0
#         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,
Пример #4
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)
Пример #5
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)
Пример #6
0
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),
Пример #7
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'))
Пример #9
0
                              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 +
Пример #10
0
    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)] -
Пример #11
0
    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)] -
Пример #12
0
                          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',
Пример #13
0
            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,
Пример #14
0
        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)
Пример #15
0
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(
Пример #16
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)
Пример #17
0
                                 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')
Пример #18
0
        # 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)