code: def plot(self,
               resolution_constant_regions=20,
               resolution_smooth_regions=200):
          
          if self.eps == 0:
              x = []; y = []
              for I, value in zip(self._indicator_functions, self._values):
                  x.append(I.L)
                  y.append(value)
                  x.append(I.R)
                  y.append(value)
              return x, y
          else:
              n = float(resolution_smooth_regions)/self.eps
              if len(self.data) == 1:
                  return [self.L, self.R], [self._values[0], self._values[0]]
              else:
                  x = [np.linspace(self.data[0][0], self.data[1][0]-self.eps,
                                   resolution_constant_regions+1)]
                  # Iterate over all internal discontinuities
                  for I in self._indicator_functions[1:]:
                      x.append(np.linspace(I.L-self.eps, I.L+self.eps,
                                           resolution_smooth_regions+1))
                      x.append(np.linspace(I.L+self.eps, I.R-self.eps,
                                           resolution_constant_regions+1))
                  # Last part
                  x.append(np.linspace(I.R-self.eps, I.R, 3))
                  x = np.concatenate(x)
                  y = self(x)
                  return x, y
docs: Return arrays x, y for plotting the piecewise constant function.
          Just the minimum number of straight lines are returned if
          ``eps=0``, otherwise `resolution_constant_regions` plotting intervals
          are insed in the constant regions with `resolution_smooth_regions`
          plotting intervals in the smoothed regions.