altair.when

altair.when(predicate=Undefined, *more_predicates, empty=Undefined, **constraints)

Начинает условие when-then-otherwise.

Результирующий предикат объединяет predicate и дополнительные позиционные и именованные аргументы оператором &.

Параметры

predicate

Предикат выбора или проверки. Строка интерпретируется как проверяемое выражение. Принимаются те же типы аргументов, что и в condition.

*more_predicates

Дополнительные предикаты, поддерживающие оператор &.

empty

Предикат пустого выбора по умолчанию возвращает True. Для изменения задайте empty=False. Если один Parameter используется несколько раз, alt.when(..., empty=...) позволяет отдельно настроить каждый случай.

**constraints

Предикаты равенства полей: сокращение для alt.datum.field_name == value. Примеры приведены ниже.

## Возвращает

When — промежуточное состояние. Для завершения условия нужно вызвать When.then().

Примечания

Синтаксис непосредственно основан на when-then-otherwise из polars.when.

Примеры

Подготовка общей диаграммы:

Accepts the same range of inputs as in :func:`.condition()`.

Обычная конструкция if-then-else напрямую записывается через when-then-otherwise:

When ``predicate`` is a ``Parameter`` that is used more than once,
``alt.when(..., empty=...)`` provides granular control for each occurrence.

Без otherwise используется значение канала по умолчанию:

import altair as alt
from altair.datasets import data

source = data.cars()
brush = alt.selection_interval()
points = (
    alt.Chart(source)
    .mark_point()
    .encode(x="Horsepower", y="Miles_per_Gallon")
    .add_params(brush)
)
points

Позиционные предикаты объединяются оператором &:

points.encode(color=alt.when(brush).then("Origin").otherwise(alt.value("lightgray")))

Именованные ограничения constraints упрощают составные условия:

points.encode(color=alt.when(brush).then("Origin"))