コード例 #1
0
def precip_psi_plot(run, ax):

    data = xr.open_dataset('/scratch/rg419/Data_moist/climatologies/' + run +
                           '.nc')

    f1 = precip_mse_plot(data, ax, plot_type='precip', precip_contour=None)

    psi = mass_streamfunction(data, a=6376.0e3, dp_in=50.)
    psi /= 1.e9

    psi.sel(pfull=500).plot.contour(ax=ax,
                                    x='xofyear',
                                    y='lat',
                                    levels=np.arange(-500., 0., 100.),
                                    add_labels=False,
                                    colors='0.7',
                                    linewidths=2,
                                    linestyles='--')
    psi.sel(pfull=500).plot.contour(ax=ax,
                                    x='xofyear',
                                    y='lat',
                                    levels=np.arange(0., 510., 100.),
                                    add_labels=False,
                                    colors='0.7',
                                    linewidths=2)
    psi.sel(pfull=500).plot.contour(ax=ax,
                                    x='xofyear',
                                    y='lat',
                                    levels=np.arange(-500., 510., 500.),
                                    add_labels=False,
                                    colors='0.5',
                                    linewidths=2)

    return f1
コード例 #2
0
def plot_multiple(data,
                  plotname,
                  do_xlabels=False,
                  sharex=True,
                  var_dic=var_dic):
    n = len(data)
    rcParams['figure.figsize'] = 6, 10 / 3 * n

    fig, axes = plt.subplots(n, sharex=sharex)
    axes = axes.tolist()

    f1 = precip_mse_plot(data[0], axes[0], **var_dic)
    for i in range(1, n - 1):
        precip_mse_plot(data[i], axes[i], **var_dic)
    precip_mse_plot(data[n - 1], axes[n - 1], do_xlabels=True, **var_dic)

    plt.subplots_adjust(left=0.2, right=0.95, top=0.95, bottom=0., hspace=0.2)
    #Colorbar
    cb1 = fig.colorbar(f1,
                       ax=axes,
                       use_gridspec=True,
                       orientation='horizontal',
                       fraction=0.15,
                       pad=0.07,
                       aspect=30)

    if var_dic['plot_type'] == 'mse':
        cb1.set_label('Moist static energy, kJ/kg')
    else:
        cb1.set_label('Precipitation, mm/day')

    if var_dic['plot_type'] == None:
        plt.savefig(plot_dir + 'precip_mse_hm_' + plotname + '.pdf',
                    format='pdf')
    elif var_dic['plot_type'] == 'precip':
        plt.savefig(plot_dir + 'precip_hm_' + plotname + '.pdf', format='pdf')
    elif var_dic['plot_type'] == 'mse':
        plt.savefig(plot_dir + 'mse_hm_' + plotname + '.pdf', format='pdf')

    plt.close()
コード例 #3
0
def precip_psi_plot(run, ax, label='a)', p_cent=True):

    data = xr.open_dataset('/disca/share/rg419/Data_moist/climatologies/' +
                           run + '.nc')
    psi = mass_streamfunction(data, a=6376.0e3, dp_in=50.)
    psi /= 1.e9

    psi = make_sym(psi, asym=True)
    data['precipitation'] = make_sym(data.precipitation)

    f1 = precip_mse_plot(data,
                         ax,
                         plot_type='precip',
                         precip_contour=None,
                         p_cent=p_cent)

    psi.sel(pfull=500).plot.contour(ax=ax,
                                    x='xofyear',
                                    y='lat',
                                    levels=np.arange(-500., 0., 100.),
                                    add_labels=False,
                                    colors='0.7',
                                    linewidths=2,
                                    linestyles='--',
                                    alpha=0.7)
    psi.sel(pfull=500).plot.contour(ax=ax,
                                    x='xofyear',
                                    y='lat',
                                    levels=np.arange(0., 510., 100.),
                                    add_labels=False,
                                    colors='0.7',
                                    linewidths=2,
                                    alpha=0.7)
    psi.sel(pfull=500).plot.contour(ax=ax,
                                    x='xofyear',
                                    y='lat',
                                    levels=np.arange(-1000., 1010., 1000.),
                                    add_labels=False,
                                    colors='0.5',
                                    linewidths=2,
                                    alpha=0.7)

    ax.text(-10, 60, label)

    return f1
コード例 #4
0
def local_pcent_plots(run,
                      regions=[[350, 10], [80, 100], [170, 190], [260, 280]],
                      do_make_sym=True):

    data = xr.open_dataset('/disca/share/rg419/Data_moist/climatologies/' +
                           run + '.nc')

    if do_make_sym:
        data['precipitation'] = make_sym(data.precipitation)

    data = precip_centroid_ll(data, lat_bound=30.)

    def get_lons(lonin, data):
        if lonin[1] > lonin[0]:
            lons = [
                data.lon[i] for i in range(len(data.lon))
                if data.lon[i] >= lonin[0] and data.lon[i] < lonin[1]
            ]
        else:
            lons = [
                data.lon[i] for i in range(len(data.lon))
                if data.lon[i] >= lonin[0] or data.lon[i] < lonin[1]
            ]
        return lons

    lons_1 = get_lons(regions[0], data)
    lons_2 = get_lons(regions[1], data)
    lons_3 = get_lons(regions[2], data)
    lons_4 = get_lons(regions[3], data)

    dpcentdt_1 = gr.ddt(data.p_cent.sel(lon=lons_1).mean('lon')) * 86400.
    dpcentdt_2 = gr.ddt(data.p_cent.sel(lon=lons_2).mean('lon')) * 86400.
    dpcentdt_3 = gr.ddt(data.p_cent.sel(lon=lons_3).mean('lon')) * 86400.
    dpcentdt_4 = gr.ddt(data.p_cent.sel(lon=lons_4).mean('lon')) * 86400.

    # Set figure parameters
    rcParams['figure.figsize'] = 10, 7
    rcParams['font.size'] = 14
    # Start figure with 4 subplots
    fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)

    ax1.plot(data.p_cent.sel(lon=lons_1).mean('lon'),
             dpcentdt_1,
             'kx',
             mew=2,
             ms=10,
             alpha=0.5)
    ax1.plot(data.p_cent.sel(lon=lons_1).mean('lon'),
             dpcentdt_1,
             alpha=0.3,
             color='k',
             linewidth=2)
    ax1.set_title('West coast')

    ax2.plot(data.p_cent.sel(lon=lons_2).mean('lon'),
             dpcentdt_2,
             'kx',
             mew=2,
             ms=10,
             alpha=0.5)
    ax2.plot(data.p_cent.sel(lon=lons_2).mean('lon'),
             dpcentdt_2,
             alpha=0.3,
             color='k',
             linewidth=2)
    ax2.set_title('Land')

    ax3.plot(data.p_cent.sel(lon=lons_3).mean('lon'),
             dpcentdt_3,
             'kx',
             mew=2,
             ms=10,
             alpha=0.5)
    ax3.plot(data.p_cent.sel(lon=lons_3).mean('lon'),
             dpcentdt_3,
             alpha=0.3,
             color='k',
             linewidth=2)
    ax3.set_title('East coast')

    ax4.plot(data.p_cent.sel(lon=lons_4).mean('lon'),
             dpcentdt_4,
             'kx',
             mew=2,
             ms=10,
             alpha=0.5)
    ax4.plot(data.p_cent.sel(lon=lons_4).mean('lon'),
             dpcentdt_4,
             alpha=0.3,
             color='k',
             linewidth=2)
    ax4.set_title('Ocean')

    ax3.set_xlabel('ITCZ latitude')
    ax4.set_xlabel('ITCZ latitude')
    ax1.set_ylabel('ITCZ migration rate')
    ax3.set_ylabel('ITCZ migration rate')

    for ax in [ax1, ax2, ax3, ax4]:
        ax.grid(True, linestyle=':')
        ax.set_xlim(-25, 25)
        ax.set_ylim(-1.0, 1.0)

    plt.subplots_adjust(left=0.1,
                        right=0.97,
                        top=0.95,
                        bottom=0.1,
                        hspace=0.3,
                        wspace=0.3)

    # Save as a pdf
    plt.savefig(plot_dir + 'bowties_' + run + '.pdf', format='pdf')
    plt.close()

    # Start figure with 4 subplots
    fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)

    precip_mse_plot(data, ax1, lonin=regions[0], lat_bound=30.)
    precip_mse_plot(data, ax2, lonin=regions[1], lat_bound=30.)
    precip_mse_plot(data, ax3, lonin=regions[2], lat_bound=30.)
    precip_mse_plot(data, ax4, lonin=regions[3], lat_bound=30.)

    ax1.set_title('West coast')
    ax2.set_title('Land')
    ax3.set_title('East coast')
    ax4.set_title('Ocean')

    ax3.set_xlabel('Pentad')
    ax4.set_xlabel('Pentad')
    ax1.set_ylabel('Latitude')
    ax3.set_ylabel('Latitude')

    for ax in [ax1, ax2, ax3, ax4]:
        ax.grid(True, linestyle=':')

    plt.subplots_adjust(left=0.1,
                        right=0.97,
                        top=0.95,
                        bottom=0.1,
                        hspace=0.3,
                        wspace=0.3)

    # Save as a pdf
    plt.savefig(plot_dir + 'precip_' + run + '.pdf', format='pdf')
    plt.close()

    data.close()
コード例 #5
0

rcParams['figure.figsize'] = 5, 10
rcParams['font.size'] = 14

data_ctrl = xr.open_dataset('/scratch/rg419/Data_moist/climatologies/control_qflux.nc')
data_noam = xr.open_dataset('/scratch/rg419/Data_moist/climatologies/no_americas.nc')
data_notp = xr.open_dataset('/scratch/rg419/Data_moist/climatologies/no_TIP.nc')

plot_dir = '/scratch/rg419/plots/egu_2018_talk_plots/'
mkdir = sh.mkdir.bake('-p')
mkdir(plot_dir)


fig, (ax1, ax2, ax3) = plt.subplots(3, sharex=True)
f1 = precip_mse_plot(data_ctrl, ax1, lonin=[60.,150.])
ax1.set_title('Control')
precip_mse_plot(data_notp, ax2, lonin=[60.,150.])
ax2.set_title('No Tibetan Plateau')
precip_mse_plot(data_noam, ax3, lonin=[60.,150.])
ax3.set_title('No America')

plt.xticks([0.,12.,24.,36.,48.,60.,72.])

plt.subplots_adjust(left=0.2, right=0.95, top=0.95, bottom=0., hspace=0.2)
#Colorbar
cb1=fig.colorbar(f1, ax=(ax1, ax2, ax3), use_gridspec=True, orientation = 'horizontal',fraction=0.15, pad=0.07, aspect=30)
cb1.set_label('Precipitation, mm/day')

plt.savefig(plot_dir+'precip_hms.pdf', format='pdf')
plt.close()     
コード例 #6
0
data_sn1_zs = xr.open_dataset(
    '/scratch/rg419/Data_moist/climatologies/sn_1_sst_zs.nc')
data_sine = xr.open_dataset(
    '/scratch/rg419/Data_moist/climatologies/sine_sst_10m.nc')
data_sine_zs = xr.open_dataset(
    '/scratch/rg419/Data_moist/climatologies/sine_sst_10m_zs.nc')

plot_dir = '/scratch/rg419/plots/paper_2_figs/'
mkdir = sh.mkdir.bake('-p')
mkdir(plot_dir)

rcParams['figure.figsize'] = 5, 10
rcParams['font.size'] = 14

fig, (ax1, ax2, ax3, ax4) = plt.subplots(4, sharex=True)
f1 = precip_mse_plot(data_sn1, ax1, plot_type='precip')
ax1.set_title('sn1 SSTs')
precip_mse_plot(data_sn1_zs, ax2, plot_type='precip')
ax2.set_title('sn1 SSTs, zonally symmetric')
precip_mse_plot(data_sine, ax3, plot_type='precip')
ax3.set_title('sinusoidal SSTs')
precip_mse_plot(data_sine_zs, ax4, plot_type='precip')
ax4.set_title('sinusoidal SSTs, zonally symmetric')

for ax in [ax1, ax2, ax3, ax4]:
    ax.set_xticks([12., 24., 36., 48., 60., 72.])
    ax.set_xlim([1, 72])
    ax.fill_between([32., 36.], -60, 60, facecolor='k', alpha=0.3)
    ax.fill_between([39., 43.], -60, 60, facecolor='k', alpha=0.3)
    ax.fill_between([46., 50.], -60, 60, facecolor='k', alpha=0.3)
コード例 #7
0
data_050 = xr.open_dataset('/scratch/rg419/Data_moist/climatologies/rt_0.500.nc')
data_075 = xr.open_dataset('/scratch/rg419/Data_moist/climatologies/rt_0.750.nc')
data_100 = xr.open_dataset('/scratch/rg419/Data_moist/climatologies/sn_1.000.nc')
data_150 = xr.open_dataset('/scratch/rg419/Data_moist/climatologies/rt_1.500.nc')
data_200 = xr.open_dataset('/scratch/rg419/Data_moist/climatologies/rt_2.000.nc')
    
plot_dir = '/scratch/rg419/plots/paper_2_figs/'
mkdir = sh.mkdir.bake('-p')
mkdir(plot_dir)
    
rcParams['figure.figsize'] = 5, 12
rcParams['font.size'] = 14
    
fig, (ax1, ax2, ax3, ax4, ax5) = plt.subplots(5, sharex=True)
f1 = precip_mse_plot(data_050, ax1)
ax1.set_title('0.5xf')
precip_mse_plot(data_075, ax2)
ax2.set_title('0.75xf')
precip_mse_plot(data_100, ax3)
ax3.set_title('1xf')
precip_mse_plot(data_150, ax4)
ax4.set_title('1.5xf')
precip_mse_plot(data_200, ax5, do_xlabels=True)
ax5.set_title('2xf')
plt.subplots_adjust(left=0.2, right=0.95, top=0.95, bottom=0., hspace=0.2)
#Colorbar
cb1=fig.colorbar(f1, ax=(ax1, ax2, ax3, ax4, ax5), use_gridspec=True, orientation = 'horizontal',fraction=0.15, pad=0.07, aspect=30)
cb1.set_label('Precipitation, mm/day')

plt.savefig(plot_dir+'precip_mse_hm_rotation.pdf', format='pdf')