code: def _compute(self):
          
          positive_vals, negative_vals = self._get_separated_values()
  
          if self.logarithmic:
              positive_vals = list(
                  filter(lambda x: x > self.zero, positive_vals)
              )
              negative_vals = list(
                  filter(lambda x: x > self.zero, negative_vals)
              )
  
          self._compute_box(positive_vals, negative_vals)
          positive_vals = positive_vals or [self.zero]
          negative_vals = negative_vals or [self.zero]
  
          self._x_pos = [
              x / self._len for x in range(self._len + 1)
          ] if self._len > 1 else [0, 1]  # Center if only one value
  
          self._points(self._x_pos)
  
          self.negative_cumulation = [0] * self._len
          self.positive_cumulation = [0] * self._len
  
          if self.secondary_series:
              positive_vals, negative_vals = self._get_separated_values(True)
              positive_vals = positive_vals or [self.zero]
              negative_vals = negative_vals or [self.zero]
              self.secondary_negative_cumulation = [0] * self._len
              self.secondary_positive_cumulation = [0] * self._len
              self._pre_compute_secondary(positive_vals, negative_vals)
  
          self._x_pos = [(i + .5) / self._len for i in range(self._len)]
docs: Compute y min and max and y scale and set labels