import lenapy
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
/work/scratch/env/blazqueza/.conda/envs/lenapy/lib/python3.11/site-packages/esmpy/interface/loadESMF.py:92: VersionWarning: ESMF installation version 8.6.1, ESMPy version 8.6.0
warnings.warn("ESMF installation version {}, ESMPy version {}".format(
Open the ocean mass and its contributors time series
# Calcul de coefficients de climato
BSL=data.sel(maskGlobalBudget='Ocean')
coeffs=BSL.lntime.Coeffs_climato()
climato=coeffs.solve()
climato.result.load()
# Text of legend
trends=climato.result.sel({'coeffs':'order_1'})*lenapy.constants.LNPY_DAYS_YEAR
year_amplitudes=np.sqrt(climato.result.sel({'coeffs':'cosAnnual'})**2+
climato.result.sel({'coeffs':'sinAnnual'})**2)
trend_text=f"Trend {'{:0.2f}'.format(trends.mean().values)} \u00B1 {'{:0.2f}'.format(trends.std().values)} mm SLE/yr"
annual_text=f"Annual-cycle amplitude {'{:0.2f}'.format(year_amplitudes.mean().values)} \u00B1 {'{:0.2f}'.format(year_amplitudes.std().values)} mm SLE"
# Select dimensions starting with "product"
product_dims = [dim for dim in data.dims if dim.startswith("product")]
# Compute the mean over those dimensions
data.lntime.plot(hue='maskGlobalBudget')
gaps=BSL.time.diff(dim='time')/np.timedelta64(1,"D")
mask = gaps > 35
first_figure_y_limits = plt.ylim()
for i in range(len(gaps)):
if mask[i]:
plt.fill_betweenx(y=first_figure_y_limits, # Normalize height
x1=BSL.time[i]+np.timedelta64(5,"D"),
x2=BSL.time[i + 1]-np.timedelta64(5,"D"),
color='lightgray', alpha=0.4)
plt.ylim(first_figure_y_limits)
plt.xlim([data.time[0],data.time[-1]])
ax.set_ylabel(f'mm SLE')
ax.grid(linestyle='--', linewidth=0.5)