Объект legend располагается внутри конфигурации
options.plugins и определяет поведение, внешний вид и
интерактивность легенды в Chart.js. Он управляет тем, как отображаются
подписи наборов данных, каким образом пользователь взаимодействует с
элементами легенды и как формируются элементы отображения.
Структурно конфигурация выглядит как вложенный объект:
options → plugins → legend
На уровне архитектуры legend делится на несколько крупных блоков:
базовые параметры отображения, блок labels, блок
title, а также обработчики событий и функции генерации.
Ключевые свойства верхнего уровня отвечают за поведение всей легенды как UI-компонента.
display Определяет, будет ли легенда отображаться
вообще. Тип: boolean Значение по умолчанию:
true При установке false легенда полностью
исключается из рендера, включая DOM-слой canvas-интерфейса.
position Определяет расположение легенды относительно графика. Возможные значения:
topbottomleftrightВыбор позиции влияет не только на визуальное расположение, но и на перерасчёт доступного пространства области графика.
align Управляет выравниванием легенды вдоль выбранной стороны.
startcenterendПри горизонтальных позициях (top, bottom)
влияет на горизонтальное распределение, при вертикальных
(left, right) — на вертикальное.
fullSize Логический параметр, определяющий, занимает ли легенда всю доступную ширину/высоту контейнера.
true — легенда растягивается на всю линиюfalse — занимает только необходимое пространствоЭтот параметр критичен при создании плотных интерфейсов с несколькими осями или кастомными панелями.
rtl Определяет направление текста и элементов в режиме right-to-left. Используется в локализациях с арабским или ивритским письмом.
Наиболее сложная часть конфигурации legend — это объект
labels, отвечающий за генерацию и стилизацию каждого
элемента легенды.
options: {
plugins: {
legend: {
labels: {
// параметры
}
}
}
}
boxWidth Ширина цветового маркера рядом с текстом.
Тип: number По умолчанию: 40
boxHeight Высота маркера. Если не задан, рассчитывается автоматически на основе шрифта.
Эти параметры напрямую влияют на плотность легенды и её визуальный ритм.
Отступ между элементами легенды. Тип: number По
умолчанию: 10
Управляет внутренними промежутками между строками легенды и влияет на читаемость при большом количестве datasets.
Задает цвет текста легенды. Может быть строкой ("#000")
или функцией, возвращающей значение на основе контекста.
Объект, описывающий шрифт текста легенды:
font: {
size: 12,
family: "'Helvetica', 'Arial'",
style: "normal",
weight: "normal",
lineHeight: 1.2
}
Шрифт наследуется от глобальных настроек, но может быть переопределён локально.
Определяет, будет ли использоваться стиль точки вместо прямоугольного цветового блока.
true — круги, точки, кастомные формыfalse — стандартные прямоугольникиЭтот параметр особенно важен для линейных и точечных графиков.
Определяет форму маркера:
circlerecttrianglecrossstarrectRoundedrectRotТакже может принимать изображение или canvas pattern, что позволяет создавать сложные кастомные легенды.
Выравнивание текста внутри элемента легенды:
leftcenterrightИспользуется редко, но важно при кастомных layout-решениях.
Функция generateLabels является ядром логики legend. Она
формирует массив объектов, каждый из которых описывает отдельный элемент
легенды.
Сигнатура:
generateLabels(chart)
Возвращаемое значение: массив объектов вида:
{
text: string,
fillStyle: string,
strokeStyle: string,
hidden: boolean,
datasetIndex: number
}
Каждый объект соответствует одному dataset или элементу внутри dataset.
Основные поля:
text Отображаемый текст легенды (обычно label dataset).
fillStyle Цвет заливки маркера.
strokeStyle Цвет обводки маркера.
hidden Флаг видимости dataset.
datasetIndex Индекс набора данных, к которому относится элемент.
При отсутствии пользовательской реализации Chart.js автоматически генерирует labels на основе:
dataset.labelПереопределение generateLabels позволяет:
filter Функция фильтрации элементов легенды.
filter: (legendItem, chartData) => {}
Позволяет исключать элементы без удаления dataset.
Применяется для:
sort Функция сортировки элементов легенды.
sort: (a, b) => {}
Позволяет полностью контролировать порядок отображения.
Часто используется для:
Объект title добавляет текстовый заголовок над
легендой.
Структура:
title: {
display: true,
text: "Заголовок",
color: "#666",
font: {
size: 14,
weight: "bold"
},
padding: 6
}
display — включает или отключает заголовок text — строка или массив строк padding — отступ между заголовком и элементами legend
Функция onClick определяет поведение при нажатии на
элемент легенды.
onClick: function(e, legendItem, legend) {}
По умолчанию реализует переключение видимости dataset:
Переопределение позволяет:
Дополнительные события взаимодействия:
onHover Вызывается при наведении на элемент легенды.
onLeave Вызывается при уходе курсора.
Используются для:
Legend тесно связана с системой visibility datasets.
Каждый элемент легенды хранит состояние:
hidden: true/falseПри клике происходит переключение:
Это поведение можно отключить или изменить через
onClick.
В сложных интерфейсах legend может быть полностью вынесена за пределы canvas.
Подход включает:
display: false)generateLabels для получения данныхЭто позволяет:
Разные типы графиков по-разному используют legend:
Функция generateLabels адаптируется под тип
визуализации, формируя соответствующую структуру элементов.
Некоторые свойства dataset влияют на legend напрямую:
label — текстhidden — начальная видимостьpointStyle — форма маркераТаким образом, legend является отражением структуры данных, а не независимым слоем интерфейса.