Skip to content

resolve_color_palette

yohou.plotting._utils.resolve_color_palette(color_palette, n)

Resolve a user-provided color palette or fall back to the default.

When color_palette is None the default yohou palette is used. When the palette has fewer colours than n, the colours are cycled.

Parameters

Name Type Description Default
color_palette list[str] | None

User-provided colour hex codes, or None for the default.

required
n int

Number of colours needed.

required

Returns

Type Description
list[str]

List of exactly n colour hex codes.

Examples

>>> from yohou.plotting._utils import resolve_color_palette
>>> resolve_color_palette(None, 2)
['#2563EB', '#DC2626']
>>> resolve_color_palette(["red", "blue"], 4)
['red', 'blue', 'red', 'blue']

Source Code

Show/Hide source
def resolve_color_palette(color_palette: list[str] | None, n: int) -> list[str]:
    """Resolve a user-provided color palette or fall back to the default.

    When *color_palette* is ``None`` the default yohou palette is used.
    When the palette has fewer colours than *n*, the colours are cycled.

    Parameters
    ----------
    color_palette : list[str] | None
        User-provided colour hex codes, or ``None`` for the default.
    n : int
        Number of colours needed.

    Returns
    -------
    list[str]
        List of exactly *n* colour hex codes.

    Examples
    --------
    >>> from yohou.plotting._utils import resolve_color_palette
    >>> resolve_color_palette(None, 2)
    ['#2563EB', '#DC2626']

    >>> resolve_color_palette(["red", "blue"], 4)
    ['red', 'blue', 'red', 'blue']
    """
    if color_palette is None:
        return get_color_sequence(n)
    if not color_palette:
        msg = "color_palette must not be empty"
        raise ValueError(msg)
    return [color_palette[i % len(color_palette)] for i in range(n)]