class_docstr: Dodge and jitter to minimise overlap
  
  Useful when aligning points generated through
  [](`~plotnine.geoms.geom_point`) with dodged a
  [](`~plotnine.geoms.geom_boxplot`).
  
  Parameters
  ----------
  jitter_width :
      Proportion to jitter in horizontal direction.
      If `None`, `0.4` of the resolution of the data.
  jitter_height :
      Proportion to jitter in vertical direction.
  dodge_width :
      Amount to dodge in horizontal direction.
  random_state :
      Seed or Random number generator to use. If `None`, then
      numpy global generator :class:`numpy.random` is used.
code: def compute_panel(cls, data, scales, params):
      trans_x = None  # pyright: ignore
      trans_y = None  # pyright: ignore
  
      if params["jitter_width"] > 0:
  
          def trans_x(x):
              return jitter(
                  x,
                  amount=params["jitter_width"],
                  random_state=params["random_state"],
              )
  
      if params["jitter_height"] > 0:
  
          def trans_y(y):
              return jitter(
                  y,
                  amount=params["jitter_height"],
                  random_state=params["random_state"],
              )
  
      # dodge, then jitter
      data = cls.collide(data, params=params)
      data = cls.transform_position(data, trans_x, trans_y)
      return data
  
file_path: plotnine/plotnine/positions/position_jitterdodge.py
imports: from __future__ import annotations
  import typing
  from contextlib import suppress
  from copy import copy
  from .._utils import jitter, resolution
  from ..exceptions import PlotnineError
  from ..mapping.aes import SCALED_AESTHETICS
  from .position import position
  from .position_dodge import position_dodge
label_desc: Use image node_id 3 for calling the position_jitterdodge obj's underlying member method code with example usage: obj.compute_panel(cls, data, scales, params) and returns: data, jitter, jitter