code: def scatterplot(
      data=None,
      *,
      x=None,
      y=None,
      hue=None,
      size=None,
      style=None,
      palette=None,
      hue_order=None,
      hue_norm=None,
      sizes=None,
      size_order=None,
      size_norm=None,
      markers=True,
      style_order=None,
      legend="auto",
      ax=None,
      **kwargs,
  ):
      p = _ScatterPlotter(
          data=data,
          variables=dict(x=x, y=y, hue=hue, size=size, style=style),
          legend=legend,
      )
  
      p.map_hue(palette=palette, order=hue_order, norm=hue_norm)
      p.map_size(sizes=sizes, order=size_order, norm=size_norm)
      p.map_style(markers=markers, order=style_order)
  
      if ax is None:
          ax = plt.gca()
  
      if not p.has_xy_data:
          return ax
  
      p._attach(ax)
  
      color = kwargs.pop("color", None)
      kwargs["color"] = _default_color(ax.scatter, hue, color, kwargs)
  
      p.plot(ax, kwargs)
  
      return ax
  
imports: from functools import partial
  import warnings
  import numpy
  import pandas
  import matplotlib
  import matplotlib.pyplot
  from matplotlib.cbook import normalize_kwargs
  from ._base import VectorPlotter
  from .utils import adjust_legend_subtitles, _default_color, _deprecate_ci, _get_transform_functions, _scatter_legend_artist
  from ._statistics import EstimateAggregator, WeightedAggregator
  from .axisgrid import FacetGrid, _facet_docs
  from ._docstrings import DocstringComponents, _core_docs
label_desc: Use image node_id 2 for calling a global function with example usage: scatterplot(data) and returns: ax, ax