code: def draw(self, y, y_pred):
          
          
          label = "$R^2 = {:0.3f}$".format(self.score_)
          self.ax.scatter(
              y,
              y_pred,
              c=self.colors['point'],
              alpha=self.alpha,
              label=label)
  
          # TODO If score is happening inside a loop, draw would get called multiple times.
          # Ideally we'd want the best fit line to be drawn only once
          if self.bestfit:
              draw_best_fit(
                  y, y_pred, self.ax, 'linear', ls='--', lw=2,
                  c=self.colors['line'], label='best fit'
              )
  
          # Set the axes limits based on the range of X and Y data
          # NOTE: shared_limits will be accounted for in finalize()
          # TODO: do better than add one for really small residuals
          self.ax.set_xlim(y.min()-1, y.max()+1)
          self.ax.set_ylim(y_pred.min()-1, y_pred.max()+1)
  
          return self.ax
docs: Parameters
          ----------
          y : ndarray or Series of length n
              An array or series of target or class values
  
          y_pred : ndarray or Series of length n
              An array or series of predicted target values
  
          Returns
          ------
          ax : the axis with the plotted figure