Source code for plotnine.geoms.geom_jitter

from __future__ import annotations

import typing

from ..doctools import document
from ..exceptions import PlotnineError
from ..positions import position_jitter
from .geom_point import geom_point

if typing.TYPE_CHECKING:
    from typing import Any

    from plotnine.typing import Aes, DataLike


[docs] @document class geom_jitter(geom_point): """ Scatter plot with points jittered to reduce overplotting {usage} Parameters ---------- {common_parameters} width : float, optional Proportion to jitter in horizontal direction. The default value is that from :class:`~plotnine.positions.position_jitter` height : float, optional Proportion to jitter in vertical direction. The default value is that from :class:`~plotnine.positions.position_jitter`. random_state : int or ~numpy.random.RandomState, optional Seed or Random number generator to use. If ``None``, then numpy global generator :class:`numpy.random` is used. See Also -------- plotnine.positions.position_jitter plotnine.geoms.geom_point """ DEFAULT_PARAMS = { "stat": "identity", "position": "jitter", "na_rm": False, "width": None, "height": None, "random_state": None, } def __init__( self, mapping: Aes | None = None, data: DataLike | None = None, **kwargs: Any, ): if {"width", "height", "random_state"} & set(kwargs): if "position" in kwargs: raise PlotnineError( "Specify either 'position' or " "'width'/'height'/'random_state'" ) try: width = kwargs.pop("width") except KeyError: width = None try: height = kwargs.pop("height") except KeyError: height = None try: random_state = kwargs.pop("random_state") except KeyError: random_state = None kwargs["position"] = position_jitter( width=width, height=height, random_state=random_state ) geom_point.__init__(self, mapping, data, **kwargs)