Source code for data_morph.shapes.circles.bullseye

"""Bullseye shape."""

from __future__ import annotations

from typing import TYPE_CHECKING

import numpy as np

from .rings import Rings

if TYPE_CHECKING:
    from ..data.dataset import Dataset


[docs] class Bullseye(Rings): """ Class representing a bullseye shape comprising two concentric circles. .. plot:: :scale: 75 :caption: This shape is generated using the panda dataset. from data_morph.data.loader import DataLoader from data_morph.plotting.diagnostics import plot_shape_on_dataset from data_morph.shapes.circles import Bullseye dataset = DataLoader.load_dataset('panda') shape = Bullseye(dataset) plot_shape_on_dataset(dataset, shape, show_bounds=False, alpha=0.25) See Also -------- Circle : The individual rings are represented as circles. """ @staticmethod def _derive_radii(dataset: Dataset) -> np.ndarray: """ Derive the radii for the circles in the bullseye. Parameters ---------- dataset : Dataset The starting dataset to morph into. Returns ------- np.ndarray The radii for the circles in the bullseye. """ stdev = dataset.data[['x', 'y']].std().mean() * 1.5 return np.linspace(stdev, 0, 2, endpoint=False)