Source code for plotnine.geoms.geom_spoke
from __future__ import annotations
import typing
import numpy as np
from ..doctools import document
from .geom_segment import geom_segment
if typing.TYPE_CHECKING:
import pandas as pd
[docs]
@document
class geom_spoke(geom_segment):
"""
Line segment parameterised by location, direction and distance
{usage}
Parameters
----------
{common_parameters}
See Also
--------
plotnine.geoms.geom_segment : For documentation of extra
parameters.
"""
REQUIRED_AES = {"x", "y", "angle", "radius"}
def setup_data(self, data: pd.DataFrame) -> pd.DataFrame:
try:
radius = data["radius"]
except KeyError:
radius = self.aes_params["radius"]
try:
angle = data["angle"]
except KeyError:
angle = self.aes_params["angle"]
data["xend"] = data["x"] + np.cos(angle) * radius
data["yend"] = data["y"] + np.sin(angle) * radius
return data