Source code for plotnine_extra.geoms.geom_quasirandom

"""
``geom_quasirandom``: categorical scatter with quasi-random jitter,
ported from R's ``ggbeeswarm::geom_quasirandom``.
"""

from __future__ import annotations

from plotnine.doctools import document
from plotnine.geoms.geom_point import geom_point

from ..positions.position_quasirandom import position_quasirandom
from ._position_geom_mixin import _PositionGeomMixin


[docs] @document class geom_quasirandom(_PositionGeomMixin, geom_point): """ Points jittered to reduce overplotting using quasi-random noise The jitter is density-aware so the point cloud reflects the underlying data distribution, similar to a violin plot with individual points. {usage} Parameters ---------- {common_parameters} method : str ``"quasirandom"`` (default) for a van der Corput low-discrepancy sequence, or ``"pseudorandom"`` for uniform random jitter. width : float | None Maximum jitter width. ``None`` auto-calculates from the data resolution. varwidth : bool Scale width proportionally to group size. bandwidth : float Bandwidth adjustment for the density estimate. nbins : int | None Number of bins for density estimation. dodge_width : float | None Amount by which to dodge overlapping groups. See Also -------- plotnine_extra.positions.position_quasirandom plotnine_extra.geoms.geom_beeswarm.geom_beeswarm """ DEFAULT_PARAMS = { "stat": "identity", "position": "identity", "na_rm": False, } _position_class = position_quasirandom _position_params = { "method": "quasirandom", "width": None, "varwidth": False, "bandwidth": 0.5, "nbins": None, "dodge_width": None, }