class_docstr: Plot points (Scatter plot)
  
  {usage}
  
  Parameters
  ----------
  {common_parameters}
class_docstr_tok: ["Plot","points","(","Scatter","plot",")","{","usage","}","Parameters","--","--","--","--","--","{","common_parameters","}"]
code: def draw_unit(
      data: pd.DataFrame,
      panel_params: panel_view,
      coord: Coord,
      ax: Axes,
      **params: Any,
  ):
      # Our size is in 'points' while scatter wants
      # 'points^2'. The stroke is outside. And pi
      # gives a large enough scaling factor
      # All other sizes for which the MPL units should
      # be in points must scaled using sqrt(pi)
      size = ((data["size"] + data["stroke"]) ** 2) * np.pi
      stroke = data["stroke"] * SIZE_FACTOR
      color = to_rgba(data["color"], data["alpha"])
      shape = data["shape"].iloc[0]
  
      # It is common to forget that scatter points are
      # filled and slip-up by manually assigning to the
      # color instead of the fill. We forgive.
      if shape in FILLED_SHAPES:
          if all(c is None for c in data["fill"]):
              fill = color
          else:
              fill = to_rgba(data["fill"], data["alpha"])
      else:
          # Assume unfilled
          fill = color
          color = None
  
      ax.scatter(
          x=data["x"],
          y=data["y"],
          s=size,
          facecolor=fill,
          edgecolor=color,
          linewidth=stroke,
          marker=shape,
          zorder=params["zorder"],
          rasterized=params["raster"],
      )
  
file_path: plotnine/plotnine/geoms/geom_point.py
imports: from __future__ import annotations
  import typing
  import numpy
  from .._utils import SIZE_FACTOR, to_rgba
  from ..doctools import document
  from ..scales.scale_shape import FILLED_SHAPES
  from .geom import geom
label_desc: Use image node_id 3 for calling the geom_point obj's underlying member method code with example usage: obj.draw_unit(data, panel_params, coord, ax) without return types