Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion lib/adf_variable_defaults_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,9 @@ Q: # example of no specific values for plotting, so it will default all values t
obs_file: "Q_ERA5_monthly_climo_197901-202112.nc"
obs_name: "ERA5"
obs_var_name: "Q"
scale_factor: 1000
add_offset: 0
new_unit: "g kg$^{-1}$"


T:
Expand Down Expand Up @@ -193,4 +196,25 @@ RELHUM:
obs_file: "ERAI_all_climo.nc"
obs_name: "ERAI"
obs_var_name: "RELHUM"
category: "State"
category: "State"

Surface_Wind_Stress:
nickname: "Surface Wind Stress"
new_unit: "N m$^{-2}$"
category: "Surface variables"

TAUX:
new_unit: "N m$^{-2}$"
vector_pair: "TAUY"
vector_name: "Surface_Wind_Stress"
category: "Surface variables"
scale_factor: -1
add_offset: 0

TAUY:
new_unit: "N m$^{-2}$"
vector_pair: "TAUX"
vector_name: "Surface_Wind_Stress"
category: "Surface variables"
scale_factor: -1
add_offset: 0
34 changes: 19 additions & 15 deletions lib/plotting_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
from matplotlib.lines import Line2D
from matplotlib.ticker import MaxNLocator
from matplotlib.ticker import MultipleLocator

from adf_base import AdfError
import plotting_utils as plot_utils
Expand Down Expand Up @@ -889,15 +890,16 @@ def plot_zonal_mean_and_save(adfobj, wks, case_nickname, base_nickname,
base_title = "$\mathbf{Baseline}:$"+f"{base_nickname}\nyears: {baseline_climo_yrs[0]}-{baseline_climo_yrs[-1]}"
if has_lev:
# Generate zonal plot:
fig, ax = plt.subplots(figsize=(8,10),nrows=4, constrained_layout=True,
sharex=True, sharey=True,**cp_info['subplots_opt'])
fig, ax = plt.subplots(figsize=(8,10),nrows=4,constrained_layout=True,
sharey=True, **cp_info['subplots_opt'])

levs = np.unique(np.array(levels_sim))
alat = adata['lat']
blat = bdata['lat']

levs_diff = np.unique(np.array(levels_diff))
levs_pct_diff = np.unique(np.array(levels_pctdiff))
cbar_labelpad_zonal = 3
cbar_labelpad_zonal = 5
if len(levs) < 2:
img0, ax[0] = zonal_plot(alat, azm, ax=ax[0])
ax[0].text(0.4, 0.4, empty_message, transform=ax[0].transAxes, bbox=props)
Expand Down Expand Up @@ -990,7 +992,8 @@ def plot_zonal_mean_and_save(adfobj, wks, case_nickname, base_nickname,
for a in ax:
a.tick_params('both', length=5, width=1.5, which='major')
a.tick_params('both', length=5, width=1.5, which='minor')

a.tick_params(axis='both', labelsize=7)
a.xaxis.set_major_locator(MultipleLocator(20)) # every 20°
if log_p:
[a.set_yscale("log") for a in ax]

Expand Down Expand Up @@ -1044,7 +1047,8 @@ def plot_zonal_mean_and_save(adfobj, wks, case_nickname, base_nickname,
a.tick_params('both', length=3, width=1, which='major')
a.tick_params('both', length=3, width=1, which='minor')
a.tick_params(axis='both', labelsize=6)
a.yaxis.set_major_locator(MaxNLocator(nbins=8))
a.xaxis.set_major_locator(MultipleLocator(20)) # every 20°
a.yaxis.set_major_locator(MaxNLocator(nbins=6))
a.grid(True)
#End for

Expand Down Expand Up @@ -1226,12 +1230,12 @@ def plot_meridional_mean_and_save(adfobj, wks, case_nickname, base_nickname,

# Generate zonal plot:
fig, ax = plt.subplots(figsize=(8,10),nrows=4, constrained_layout=True,
sharex=True, sharey=True,**cp_info['subplots_opt'])
sharey=True, **cp_info['subplots_opt'])

levs = np.unique(np.array(levels_sim))
levs_diff = np.unique(np.array(levels_diff))
levs_pct_diff = np.unique(np.array(levels_pctdiff))
cbar_labelpad_zonal = 3
cbar_labelpad_merd = 5
if len(levs) < 2:
img0, ax[0] = pltfunc(adata[xdim], adata, ax=ax[0])
ax[0].text(0.4, 0.4, empty_message, transform=ax[0].transAxes, bbox=props)
Expand All @@ -1254,7 +1258,7 @@ def plot_meridional_mean_and_save(adfobj, wks, case_nickname, base_nickname,
borderpad=0,
)
cbar0 = fig.colorbar(img0, cax=cb_mean_ax, location='right',**cp_info['colorbar_opt'])
cbar0.ax.set_title(units, fontsize=cbar_size, pad=cbar_labelpad_zonal, loc='left')
cbar0.ax.set_title(units, fontsize=cbar_size, pad=cbar_labelpad_merd, loc='left')
cbar0.ax.tick_params(labelsize=cbar_size)

cb_mean_ax = inset_axes(ax[1],
Expand All @@ -1266,7 +1270,7 @@ def plot_meridional_mean_and_save(adfobj, wks, case_nickname, base_nickname,
borderpad=0,
)
cbar1 = fig.colorbar(img1, cax=cb_mean_ax, location='right',**cp_info['colorbar_opt'])
cbar1.ax.set_title(units, fontsize=cbar_size, pad=cbar_labelpad_zonal, loc='left')
cbar1.ax.set_title(units, fontsize=cbar_size, pad=cbar_labelpad_merd, loc='left')
cbar1.ax.tick_params(labelsize=cbar_size)
#End if

Expand All @@ -1286,7 +1290,7 @@ def plot_meridional_mean_and_save(adfobj, wks, case_nickname, base_nickname,
borderpad=0,
)
diff_cbar = fig.colorbar(img2, cax=diffcb_mean_ax, location='right',**cp_info['colorbar_opt'])
diff_cbar.ax.set_title(units, fontsize=cbar_size, pad=cbar_labelpad_zonal, loc='left')
diff_cbar.ax.set_title(units, fontsize=cbar_size, pad=cbar_labelpad_merd, loc='left')
diff_cbar.ax.tick_params(labelsize=cbar_size)

if len(levs_pct_diff) < 2:
Expand All @@ -1305,7 +1309,7 @@ def plot_meridional_mean_and_save(adfobj, wks, case_nickname, base_nickname,
borderpad=0,
)
pctdiff_cbar = fig.colorbar(img3, cax=pctdiffcb_mean_ax, location='right',**cp_info['colorbar_opt'])
pctdiff_cbar.ax.set_title("%", fontsize=cbar_size, pad=cbar_labelpad_zonal, loc='left')
pctdiff_cbar.ax.set_title("%", fontsize=cbar_size, pad=cbar_labelpad_merd, loc='left')
pctdiff_cbar.ax.tick_params(labelsize=cbar_size)

ax[0].set_title(case_title, loc='left', fontsize=tiFontSize)
Expand All @@ -1324,7 +1328,8 @@ def plot_meridional_mean_and_save(adfobj, wks, case_nickname, base_nickname,
for a in ax:
a.tick_params('both', length=5, width=1.5, which='major')
a.tick_params('both', length=5, width=1.5, which='minor')

a.tick_params(axis='both', labelsize=7)
a.xaxis.set_major_locator(MultipleLocator(30)) # every 30°
if log_p:
[a.set_yscale("log") for a in ax]

Expand Down Expand Up @@ -1380,9 +1385,8 @@ def plot_meridional_mean_and_save(adfobj, wks, case_nickname, base_nickname,
a.tick_params('both', length=3, width=1, which='major')
a.tick_params('both', length=3, width=1, which='minor')
a.tick_params(axis='both', labelsize=6)
# Set the maximum number of ticks desired
#a.xaxis.set_major_locator(MaxNLocator(nbins=5))
a.yaxis.set_major_locator(MaxNLocator(nbins=8))
a.xaxis.set_major_locator(MaxNLocator(nbins=12))
a.yaxis.set_major_locator(MaxNLocator(nbins=6))
a.grid(True)
#End for

Expand Down
12 changes: 2 additions & 10 deletions scripts/plotting/global_latlon_vect_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,25 +166,17 @@ def global_latlon_vect_map(adfobj):
#End if

vres["plot_type"] = __name__
vres["vector"] = True

#Make sure that variable is part of a vector pair:
"""if "vector_pair" in vres:
if "vector_pair" in vres:
var_pair = vres["vector_pair"]
var_name = vres["vector_name"]
vres["vector"] = True
else:
adfobj.debug_log(f"variable '{var}' not a vector pair")
continue
#End if"""

if "vector_pair" not in vres:
adfobj.debug_log(f"variable '{var}' not a vector pair")
continue
#End if

var_pair = vres["vector_pair"]
var_name = vres["vector_name"]

#Notify user of variable being plotted:
print(f"\t - lat/lon vector maps for {var},{var_pair}")

Expand Down
Loading