docs: def draw(self):
          """
          Renders the classification report across each axis.
          """
          # Create display grid
          cr_display = np.zeros((len(self.classes_), len(self._displayed_scores)))
  
  
          # For each class row, append columns for precision, recall, f1, and support
          for idx, cls in enumerate(self.classes_):
              for jdx, metric in enumerate(self._displayed_scores):
                  cr_display[idx, jdx] = self.scores_[metric][cls]
  
          # Set up the dimensions of the pcolormesh
          # NOTE: pcolormesh accepts grids that are (N+1,M+1)
          X, Y = np.arange(len(self.classes_)+1), np.arange(len(self._displayed_scores)+1)
          self.ax.set_ylim(bottom=0, top=cr_display.shape[0])
          self.ax.set_xlim(left=0, right=cr_display.shape[1])
  
          # Set data labels in the grid, enumerating over class, metric pairs
          # NOTE: X and Y are one element longer than the classification report
          # so skip the last element to label the grid correctly.
          for x in X[:-1]:
              for y in Y[:-1]:
  
                  # Extract the value and the text label
                  value = cr_display[x, y]
                  svalue = "{:0.3f}".format(value)
  
                  # change the svalue for support (when y == 3) because we want
                  # to label it as the actual support value, not the percentage
                  if y == 3:
                      if self.support != PERCENT:
                          svalue = self.support_score_[x]
  
                  # Determine the grid and text colors
                  base_color = self.cmap(value)
                  text_color = find_text_color(base_color)
  
                  # Add the label to the middle of the grid
                  cx, cy = x+0.5, y+0.5
                  self.ax.text(
                      cy, cx, svalue, va='center', ha='center', color=text_color
                  )
  
  
          # Draw the heatmap with colors bounded by the min and max of the grid
          # NOTE: I do not understand why this is Y, X instead of X, Y it works
          # in this order but raises an exception with the other order.
          g = self.ax.pcolormesh(
              Y, X, cr_display, vmin=0, vmax=1, cmap=self.cmap, edgecolor='w',
          )
  
          # Add the color bar
          plt.colorbar(g, ax=self.ax)
  
          # Return the axes being drawn on
          return self.ax