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. Вы получите по одной линии на группу, все в едином стиле; такой подход хорошо масштабируется при росте числа групп и избавляет от лишней легенды и палитр.