Figure notebooks for 'Lagrangian filtering for wave–mean flow decomposition'.
unlisted
ubuntu2204Kernel: Python 3 (system-wide)
In [3]:
import matplotlib.pyplot as plt import xarray as xr import numpy as np plt.rcParams.update({'font.size': 18}) plt.rc('text', usetex=True) plt.rc('text.latex',preamble=r"\usepackage{amsmath}") plt.rc('font', family='serif')
In [4]:
# Loading in datasets ds5 = xr.open_dataset('../Data/solver_lowpass_x_t_omega_2_Nint_100_strat_3_T_5_Ttotal_42.3.nc') ds10 = xr.open_dataset('../Data/solver_lowpass_x_t_omega_2_Nint_100_strat_3_T_10_Ttotal_44.8.nc') ds20 = xr.open_dataset('../Data/solver_lowpass_x_t_omega_2_Nint_100_strat_3_T_20_Ttotal_49.8.nc') ds30 = xr.open_dataset('../Data/solver_lowpass_x_t_omega_2_Nint_100_strat_3_T_30_Ttotal_54.8.nc') ds40 = xr.open_dataset('../Data/solver_lowpass_x_t_omega_2_Nint_100_strat_3_T_40_Ttotal_59.8.nc')
In [5]:
# Initialising figure fig = plt.figure(figsize = (15,8)) ax0 = plt.subplot2grid((12, 6), (3, 0), colspan=1,rowspan=6) ax1 = plt.subplot2grid((12, 6), (0, 1), colspan=1,rowspan=6) ax2 = plt.subplot2grid((12, 6), (0, 2), colspan=1,rowspan=6) ax3 = plt.subplot2grid((12, 6), (0, 3), colspan=1,rowspan=6) ax4 = plt.subplot2grid((12, 6), (0, 4), colspan=1,rowspan=6) ax5 = plt.subplot2grid((12, 6), (0, 5), colspan=1,rowspan=6) ax6 = plt.subplot2grid((12, 6), (6, 1), colspan=1,rowspan=6) ax7 = plt.subplot2grid((12, 6), (6, 2), colspan=1,rowspan=6) ax8 = plt.subplot2grid((12, 6), (6, 3), colspan=1,rowspan=6) ax9 = plt.subplot2grid((12, 6), (6, 4), colspan=1,rowspan=6) ax10 = plt.subplot2grid((12, 6), (6, 5), colspan=1,rowspan=6) axcb = plt.subplot2grid((12, 6), (10, 0), colspan=1,rowspan=1) # Plotting vmin = -1 vmax = 1 axes = [ax1,ax2,ax3,ax4,ax5,ax6,ax7,ax8,ax9,ax10] p0 = ds10.z_inst.plot(ax=ax0,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') ds5.z_LM_at_mean.plot(ax=ax1,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') ds10.z_LM_at_mean.plot(ax=ax2,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') ds20.z_LM_at_mean.plot(ax=ax3,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') ds30.z_LM_at_mean.plot(ax=ax4,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') ds40.z_LM_at_mean.plot(ax=ax5,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') (ds5.z_inst_at_mean - ds5.z_LM_at_mean).plot(ax=ax6,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') (ds10.z_inst_at_mean - ds10.z_LM_at_mean).plot(ax=ax7,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') (ds20.z_inst_at_mean - ds20.z_LM_at_mean).plot(ax=ax8,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') (ds30.z_inst_at_mean - ds30.z_LM_at_mean).plot(ax=ax9,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') (ds40.z_inst_at_mean - ds40.z_LM_at_mean).plot(ax=ax10,add_colorbar=False,vmin = vmin, vmax=vmax,cmap='RdBu_r') fig.colorbar(p0,cax=axcb,orientation='horizontal',label='Relative vorticity') textposx = 0.4 textposy = 37.4 bbox=dict(facecolor='white', edgecolor='none', boxstyle='round') ax0.text(textposx,textposy,'a) $\zeta$',bbox=bbox) ax1.text(textposx,textposy,r'b) $\overline{\zeta}^\mathrm{L}$',bbox=bbox) ax2.text(textposx,textposy,r'c) $\overline{\zeta}^\mathrm{L}$',bbox=bbox) ax3.text(textposx,textposy,r'd) $\overline{\zeta}^\mathrm{L}$',bbox=bbox) ax4.text(textposx,textposy,r'e) $\overline{\zeta}^\mathrm{L}$',bbox=bbox) ax5.text(textposx,textposy,r'f) $\overline{\zeta}^\mathrm{L}$',bbox=bbox) ax6.text(textposx,textposy,r'g) $\zeta_{\mathrm{L2}}^\mathrm{w}$',bbox=bbox) ax7.text(textposx,textposy,r'h) $\zeta_{\mathrm{L2}}^\mathrm{w}$',bbox=bbox) ax8.text(textposx,textposy,r'i) $\zeta_{\mathrm{L2}}^\mathrm{w}$',bbox=bbox) ax9.text(textposx,textposy,r'j) $\zeta_{\mathrm{L2}}^\mathrm{w}$',bbox=bbox) ax10.text(textposx,textposy,r'k) $\zeta_{\mathrm{L2}}^\mathrm{w}$',bbox=bbox) # Formatting [ax.axes.set_xticklabels([]) for ax in axes]; [ax.axes.set_yticklabels([]) for ax in axes]; [ax.set_xlabel('') for ax in axes]; [ax.set_ylabel('') for ax in axes]; ax0.axes.set_xticks([0,np.pi,2*np.pi]) labels = ['0','$\pi$','$2\pi$'] ax0.set_xticklabels(labels) ax0.set_ylabel('$t^*$') ax0.set_xlabel('$x$') ax0.set_title('Instantaneous') [ax.set_title('') for ax in [ax6,ax7,ax8,ax9,ax10]]; ax1.set_title(r'$2T = 5$') ax2.set_title(r'$2T = 10$') ax3.set_title(r'$2T = 20$') ax4.set_title(r'$2T = 30$') ax5.set_title(r'$2T = 40$') plt.subplots_adjust(wspace=0.1, hspace=1) fig.savefig('Figure-8.png',bbox_inches='tight',dpi=200)
Out[5]:
Hovmöller diagrams of vorticity for a range of averaging interval times. a) instantaneous ζ, (top row) Lagrangian mean ζL, and (bottom row) L2 wave ζL2w.
More data variables are available in the xarray datasets:
In [8]:
ds20
Out[8]:
In [0]: