docs: def draw(self, points, target=None, **kwargs):
          """
          Called from the fit method, this method creates the canvas and
          draws the plot on it.
          Parameters
          ----------
          kwargs: generic keyword arguments.
          """
  
          # Resolve the labels with the classes
          labels = self.labels if self.labels is not None else self.classes_
          if len(labels) != len(self.classes_):
              raise YellowbrickValueError((
                  "number of supplied labels ({}) does not "
                  "match the number of classes ({})"
              ).format(len(labels), len(self.classes_)))
  
          # Create the color mapping for the labels.
          color_values = resolve_colors(
              n_colors=len(labels), colormap=self.colormap, colors=self.color)
          colors = dict(zip(labels, color_values))
  
          # Transform labels into a map of class to label
          labels = dict(zip(self.classes_, labels))
  
          # Define boundaries with a vertical line
          if self.annotate_docs:
              for xcoords in self.boundaries_:
                  self.ax.axvline(x=xcoords, color='lightgray', linestyle='dashed')
  
          series = defaultdict(lambda: {'x':[], 'y':[]})
  
          if target is not None:
              for point, t in zip(points, target):
                  label = labels[t]
                  series[label]['x'].append(point[0])
                  series[label]['y'].append(point[1])
          else:
              label = self.classes_[0]
              for x, y in points:
                  series[label]['x'].append(x)
                  series[label]['y'].append(y)
  
          for label, points in series.items():
              self.ax.scatter(points['x'], points['y'], marker='|',
                              c=colors[label], zorder=100, label=label)
  
          self.ax.set_yticks(list(range(len(self.indexed_words_))))
          self.ax.set_yticklabels(self.indexed_words_)