code: def limit_range_for_scale(self, vmin, vmax, minpos):
          
          vmin_bound = self._transform.transform_non_affine(0)
          vmax_bound = self._transform.transform_non_affine(self._transform.M)
          vmin = max(vmin, vmin_bound)
          vmax = min(vmax, vmax_bound)
          return vmin, vmax
docs: Return minimum and maximum bounds for the logicle axis.
  
          Parameters
          ----------
          vmin : float
              Minimum data value.
          vmax : float
              Maximum data value.
          minpos : float
              Minimum positive value in the data. Ignored by this function.
  
          Return
          ------
          float
              Minimum axis bound.
          float
              Maximum axis bound.