Source code for plotnine.geoms.geom_pointrange

from __future__ import annotations

import typing

from ..doctools import document
from .geom import geom
from .geom_linerange import geom_linerange
from .geom_path import geom_path
from .geom_point import geom_point

if typing.TYPE_CHECKING:
    from typing import Any

    import pandas as pd

    from plotnine.iapi import panel_view
    from plotnine.typing import Axes, Coord, DrawingArea, Layer


[docs]@document class geom_pointrange(geom): """ Vertical interval represented by a line with a point {usage} Parameters ---------- {common_parameters} fatten : float, optional (default: 2) A multiplicative factor used to increase the size of the point along the line-range. """ DEFAULT_AES = { "alpha": 1, "color": "black", "fill": None, "linetype": "solid", "shape": "o", "size": 0.5, } REQUIRED_AES = {"x", "y", "ymin", "ymax"} DEFAULT_PARAMS = { "stat": "identity", "position": "identity", "na_rm": False, "fatten": 4, } @staticmethod def draw_group( data: pd.DataFrame, panel_params: panel_view, coord: Coord, ax: Axes, **params: Any, ): geom_linerange.draw_group( data.copy(), panel_params, coord, ax, **params ) data["size"] = data["size"] * params["fatten"] data["stroke"] = geom_point.DEFAULT_AES["stroke"] geom_point.draw_group(data, panel_params, coord, ax, **params) @staticmethod def draw_legend( data: pd.Series[Any], da: DrawingArea, lyr: Layer ) -> DrawingArea: """ Draw a point in the box Parameters ---------- data : Series Data Row da : DrawingArea Canvas lyr : layer Layer Returns ------- out : DrawingArea """ geom_path.draw_legend(data, da, lyr) data["size"] = data["size"] * lyr.geom.params["fatten"] data["stroke"] = geom_point.DEFAULT_AES["stroke"] geom_point.draw_legend(data, da, lyr) return da