Source code for plotnine.scales.scale_identity
from __future__ import annotations
import typing
from ..doctools import document
from ..utils import alias
from .scale_continuous import scale_continuous
from .scale_discrete import scale_discrete
if typing.TYPE_CHECKING:
from typing import Any, Literal, Sequence
class MapTrainMixin:
"""
Override map and train methods
"""
guide: Literal["legend"] | None = None
def map(self, x: Sequence[Any]) -> Sequence[Any]:
"""
Identity map
Notes
-----
Identity scales bypass the palette completely since the
map is the identity function.
"""
return x
def train(self, x):
# do nothing if no guide,
# otherwise train so we know what breaks to use
if self.guide is None:
return
return super().train(x) # pyright: ignore
[docs]@document
class scale_color_identity(MapTrainMixin, scale_discrete):
"""
No color scaling
Parameters
----------
{superclass_parameters}
guide : None | 'legend'
Whether to include a legend. Default is None.
"""
_aesthetics = ["color"]
[docs]@document
class scale_fill_identity(scale_color_identity):
"""
No color scaling
Parameters
----------
{superclass_parameters}
"""
_aesthetics = ["fill"]
[docs]@document
class scale_shape_identity(MapTrainMixin, scale_discrete):
"""
No shape scaling
Parameters
----------
{superclass_parameters}
guide : None | 'legend'
Whether to include a legend. Default is None.
"""
_aesthetics = ["shape"]
[docs]@document
class scale_linetype_identity(MapTrainMixin, scale_discrete):
"""
No linetype scaling
Parameters
----------
{superclass_parameters}
guide : None | 'legend'
Whether to include a legend. Default is None.
"""
_aesthetics = ["linetype"]
[docs]@document
class scale_alpha_identity(MapTrainMixin, scale_continuous):
"""
No alpha scaling
Parameters
----------
{superclass_parameters}
guide : None | 'legend'
Whether to include a legend. Default is None.
"""
_aesthetics = ["alpha"]
[docs]@document
class scale_size_identity(MapTrainMixin, scale_continuous):
"""
No size scaling
Parameters
----------
{superclass_parameters}
guide : None | 'legend'
Whether to include a legend. Default is None.
"""
_aesthetics = ["size"]
# American to British spelling
alias("scale_colour_identity", scale_color_identity)