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
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()
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
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()
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()
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)
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')