class_docstr: ScatterVisualizer is a bivariate feature data visualization algorithm that
  plots using the Cartesian coordinates of each point.
  
      Parameters
      ----------
  
      ax : a matplotlib plot, default: None
          The axis to plot the figure on.
  
      x : string, default: None
          The feature name that corresponds to a column name or index postion
          in the matrix that will be plotted against the x-axis
  
      y : string, default: None
          The feature name that corresponds to a column name or index postion
          in the matrix that will be plotted against the y-axis
  
      features : a list of two feature names to use, default: None
          List of two features that correspond to the columns in the array.
          The order of the two features correspond to X and Y axes on the
          graph. More than two feature names or columns will raise an error.
          If a DataFrame is passed to fit and features is None, feature names
          are selected that are the columns of the DataFrame.
  
      classes : a list of class names for the legend, default: None
          If classes is None and a y value is passed to fit then the classes
          are selected from the target vector.
  
      color : optional list or tuple of colors to colorize points, default: None
          Use either color to colorize the points on a per class basis or
          colormap to color them on a continuous scale.
  
      colormap : optional string or matplotlib cmap to colorize points, default: None
          Use either color to colorize the points on a per class basis or
          colormap to color them on a continuous scale.
  
      markers : iterable of strings, default: ,+o*vhd
          Matplotlib style markers for points on the scatter plot points
  
      alpha : float, default: 1.0
          Specify a transparency where 1 is completely opaque and 0 is completely
          transparent. This property makes densely clustered points more visible.
  
      kwargs : keyword arguments passed to the super class.
  
      These parameters can be influenced later on in the visualization
      process, but can and should be set as early as possible.
class_docstr_tok: ["ScatterVisualizer","is","a","bivariate","feature","data","visualization","algorithm","that","plots","using","the","Cartesian","coordinates","of","each","point",".","Parameters","--","--","--","--","--","ax",":","a","matplotlib","plot",",","default",":","None","The","axis","to","plot","the","figure","on",".","x",":","string",",","default",":","None","The","feature","name","that","corresponds","to","a","column","name","or","index","postion","in","the","matrix","that","will","be","plotted","against","the","x-axis","y",":","string",",","default",":","None","The","feature","name","that","corresponds","to","a","column","name","or","index","postion","in","the","matrix","that","will","be","plotted","against","the","y-axis","features",":","a","list","of","two","feature","names","to","use",",","default",":","None","List","of","two","features","that","correspond","to","the","columns","in","the","array",".","The","order","of","the","two","features","correspond","to","X","and","Y","axes","on","the","graph",".","More","than","two","feature","names","or","columns","will","raise","an","error",".","If","a","DataFrame","is","passed","to","fit","and","features","is","None",",","feature","names","are","selected","that","are","the","columns","of","the","DataFrame",".","classes",":","a","list","of","class","names","for","the","legend",",","default",":","None","If","classes","is","None","and","a","y","value","is","passed","to","fit","then","the","classes","are","selected","from","the","target","vector",".","color",":","optional","list","or","tuple","of","colors","to","colorize","points",",","default",":","None","Use","either","color","to","colorize","the","points","on","a","per","class","basis","or","colormap","to","color","them","on","a","continuous","scale",".","colormap",":","optional","string","or","matplotlib","cmap","to","colorize","points",",","default",":","None","Use","either","color","to","colorize","the","points","on","a","per","class","basis","or","colormap","to","color","them","on","a","continuous","scale",".","markers",":","iterable","of","strings",",","default",":",",","+o","*","vhd","Matplotlib","style","markers","for","points","on","the","scatter","plot","points","alpha",":","float",",","default",":","1.0","Specify","a","transparency","where","1","is","completely","opaque","and","0","is","completely","transparent",".","This","property","makes","densely","clustered","points","more","visible",".","kwargs",":","keyword","arguments","passed","to","the","super","class",".","These","parameters","can","be","influenced","later","on","in","the","visualization","process",",","but","can","and","should","be","set","as","early","as","possible","."]
docstr: Called from the fit method, this method creates a scatter plot that
  draws each instance as a class or target colored point, whose location
  is determined by the feature data set.
docstr_tok: ["Called","from","the","fit","method",",","this","method","creates","a","scatter","plot","that","draws","each","instance","as","a","class","or","target","colored","point",",","whose","location","is","determined","by","the","feature","data","set","."]
code: def draw(self, X, y, **kwargs):
      """Called from the fit method, this method creates a scatter plot that
      draws each instance as a class or target colored point, whose location
      is determined by the feature data set.
      """
      # Set the axes limits
      self.ax.set_xlim([-1, 1])
      self.ax.set_ylim([-1, 1])
  
      # set the colors
      color_values = resolve_colors(
          n_colors=len(self.classes_),
          colormap=self.colormap,
          colors=self.color,
      )
  
      colors = dict(zip(self.classes_, color_values))
  
      # Create a data structure to hold the scatter plot representations
      to_plot = {}
      for kls in self.classes_:
          to_plot[kls] = [[], []]
  
      # Add each row of the data set to to_plot for plotting
      # TODO: make this an independent function for override
      for i, row in enumerate(X):
          row_ = np.repeat(np.expand_dims(row, axis=1), 2, axis=1)
          x_, y_ = row_[0], row_[1]
          kls = self.classes_[y[i]]
  
          to_plot[kls][0].append(x_)
          to_plot[kls][1].append(y_)
  
      # Add the scatter plots from the to_plot function
      # TODO: store these plots to add more instances to later
      # TODO: make this a separate function
      for i, kls in enumerate(self.classes_):
          self.ax.scatter(
              to_plot[kls][0],
              to_plot[kls][1],
              marker=next(self.markers),
              color=colors[kls],
              label=str(kls),
              alpha=self.alpha,
              **kwargs,
          )
  
      self.ax.axis("equal")
  
file_path: yellowbrick/yellowbrick/contrib/scatter.py
imports: import itertools
  import numpy
  from yellowbrick.features.base import DataVisualizer
  from yellowbrick.utils import is_dataframe, is_structured_array
  from yellowbrick.utils import has_ndarray_int_columns
  from yellowbrick.exceptions import YellowbrickValueError
  from yellowbrick.style.colors import resolve_colors
label_desc: Use image node_id 3 for calling the ScatterVisualizer obj's underlying member method code with example usage: obj.draw(X, y) without return types