docs: def get_downsampled_scatter(self, xax="area_um", yax="deform",
                                  downsample=0, xscale="linear",
                                  yscale="linear"):
          """Downsampling by removing points at dense locations
  
          Parameters
          ----------
          xax: str
              Identifier for x axis (e.g. "area_um", "aspect", "deform")
          yax: str
              Identifier for y axis
          downsample: int
              Number of points to draw in the down-sampled plot.
              This number is either
  
              - >=1: exactly downsample to this number by randomly adding
                     or removing points
              - 0  : do not perform downsampling
          xscale: str
              If set to "log", take the logarithm of the x-values before
              performing downsampling. This is useful when data are are
              displayed on a log-scale. Defaults to "linear".
          yscale: str
              See `xscale`.
  
          Returns
          -------
          xnew, xnew: filtered x and y
          """
          if downsample < 0:
              raise ValueError("`downsample` must be zero or positive!")
  
          downsample = int(downsample)
          xax = xax.lower()
          yax = yax.lower()
  
          # Get data
          x = self[xax][self.filter.all]
          y = self[yax][self.filter.all]
  
          # Apply scale (no change for linear scale)
          xs = self._apply_scale(x, xscale, xax)
          ys = self._apply_scale(y, yscale, yax)
  
          _, _, idx = downsampling.downsample_grid(xs, ys,
                                                   samples=downsample,
                                                   ret_idx=True)
          self._plot_filter = idx
          return x[idx], y[idx]