From 2172b4f34769121da485a3e63c7ca6298eac564e Mon Sep 17 00:00:00 2001
From: Nils Brueggemann <nils.brueggemann@mpimet.mpg.de>
Date: Mon, 10 Mar 2025 16:20:14 +0100
Subject: [PATCH] pyic_view: Better representation of land sea mask.

---
 scripts/pyic_view.py | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/scripts/pyic_view.py b/scripts/pyic_view.py
index 9c20f7b..b509f18 100755
--- a/scripts/pyic_view.py
+++ b/scripts/pyic_view.py
@@ -118,12 +118,12 @@ def get_data(ds, var_name, it, iz, res, lon_reg, lat_reg):
     dai = pyic.interp_to_rectgrid_xr(
         ds[var_name].isel(**isel_dict), res=res,
         lon_reg=lon_reg, lat_reg=lat_reg,
-        verbose=False
+        verbose=False,
+        mask_out_of_range=False,
     )
     dai.attrs["depth_name"] = depth_name
     return dai.where(dai!=0.)
 
-
 class view(object):
     def __init__(self, flist, path_grid, fig_size_fac=1.0):
         # Initialize Tkinter
@@ -467,13 +467,26 @@ class view(object):
             self.X, self.Y = self.transformer.transform(self.Lon, self.Lat, direction='FORWARD')
 
         # make plot
-        valid = np.isfinite(self.X) & np.isfinite(self.Y)
         self.hm = pyic.shade(
             #self.X[valid], self.Y[valid], self.dai.data[valid], 
             self.X, self.Y, self.dai.to_masked_array(), 
             ax=self.ax, cax=self.cax,
             adjust_axlims=False,
-            )
+        )
+
+        ## plot the mask of land values
+        #mask = self.dai.to_masked_array()
+        #mask[mask!=0] = np.ma.masked
+        #cmap = plt.cm.viridis
+        #cmap.set_under(color='0.7')  # set color of mask
+        #pyic.shade(
+        #    self.X, self.Y, mask,
+        #    ax=self.ax, cax=0,
+        #    clim=[2,3],
+        #    adjust_axlims=False,
+        #    cmap=cmap,
+        #)
+
         # set ax limits
         self.ax.set_xlim(self.xlim)
         self.ax.set_ylim(self.ylim)
@@ -485,7 +498,6 @@ class view(object):
         else:
             self.ax.set_xticks([])
             self.ax.set_yticks([])
-        self.ax.set_facecolor('0.7')
         self.update_cmap()
         self.update_clim()
         # set titles
@@ -529,13 +541,13 @@ class view(object):
             #self.xlim = [-4660515.349812048,  4660515.349812048]
             #self.ylim = [-4658959.2511977535, 4658959.2511977535]
             self.lon_reg = [-180, 180]
-            self.lat_reg = [50, 90]
+            self.lat_reg = [48, 90]
             lat_reg_axlim = [60,90]
         elif self.proj=="+proj=stere +lat_0=-90 +lon_0=0":
             #self.xlim = [-5965970.154575175, 5965970.154575175]
             #self.ylim = [-5963978.177895851, 5963978.177895851]
             self.lon_reg = [-180, 180]
-            self.lat_reg = [-90, -40]
+            self.lat_reg = [-90, -35]
             lat_reg_axlim = [-90,-50]
         else:
             self.lon_reg = [-180, 180]
@@ -656,6 +668,7 @@ class view(object):
             cmap = getattr(cmocean.cm, cmap)
         else:
             cmap = getattr(plt.cm, cmap)
+        cmap.set_bad('0.7')
         self.hm[0].set_cmap(cmap)
         self.canvas.draw()
 
-- 
GitLab