2026, Jan 10 06:02

Сгруппированные ряды в Altair без легенды: канал detail

Научитесь рисовать множество линий в Altair одним цветом без легенды: замените color на detail, чтобы группировать ряды без лишней палитры и шума. Пример кода.

Один цвет и много линий в Altair: как рисовать сгруппированные ряды без легенды

Когда вы строите несколько рядов в Altair, в типичном примере используется канал color для разделения групп. Это удобно для сравнения, но не лучшая идея, когда нужно, чтобы множество перекрывающихся линий имели единый стиль — например, реплики одной и той же модели в симуляции, где легенда и цветовая палитра добавляют шума больше, чем пользы.

Вот типичная конфигурация, которая назначает каждой группе свой цвет:

import altair as al
from vega_datasets import data as vds

df_input = vds.stocks()

al.Chart(df_input).mark_line().encode(
    x='date:T',
    y='price:Q',
    color='symbol:N',
)

В результате каждая линия получает свой цвет, а в легенде появляются подписи.

Что на самом деле происходит

Канал color кодирует ключ группировки в визуальное различие, поэтому каждая категория получает свой оттенок, а диаграмма автоматически создаёт легенду. Если ваша цель — отрисовать множество рядов как единую визуальную группу, сохранив при этом отдельные линии, цвет — неподходящий канал.

Правильный подход: используйте канал detail

Чтобы нарисовать несколько линий одним цветом и обойтись без подписей, переключитесь с color на detail. Канал detail сообщает Altair, что данные нужно сгруппировать в отдельные метки без привязки этой группировки к эстетике вроде цвета. В итоге вы получаете много линий, единый стиль и отсутствие легенды.

import altair as al
from vega_datasets import data as vds

df_input = vds.stocks()

al.Chart(df_input).mark_line().encode(
    x='date:T',
    y='price:Q',
    detail='symbol:N',
)

Все линии будут одного цвета, но при этом отрисуется по одной линии на каждую группу.

Почему это важно

Когда групп много — десятки или сотни реплик — цвет быстро превращается в проблему: перегружает читателя и заставляет диаграмму таскать громоздкую легенду. Группировка через detail сохраняет фокус на общей картине распределения и динамике между репликами, не вводя лишних визуальных различий.

Выводы

Если вам нужны несколько рядов из одного датасета и вы не хотите различать их цветом или подписями, поместите поле группировки в detail, а не в color. Вы получите по одной линии на группу, все в едином стиле; такой подход хорошо масштабируется при росте числа групп и избавляет от лишней легенды и палитр.