Объект legend в Vega-Lite описывает правила отображения
легенды — вспомогательного визуального элемента, который связывает
визуальные переменные графика (цвет, форму, размер и др.) с исходными
данными. Легенда формируется автоматически на основе шкал
(scale), но может быть полностью переопределена через
конфигурацию.
В Vega (низкоуровневый слой) легенда является частью спецификации
legends, тогда как в Vega-Lite она чаще задаётся внутри
encoding или глобального блока config.
Несмотря на различия уровней абстракции, структура остаётся
концептуально схожей: легенда представляет собой набор свойств,
управляющих отображением символов, подписей и заголовков.
В Vega-Lite легенда может быть определена как объект со следующей общей структурой:
{
"legend": {
"orient": "right",
"title": "Категория",
"type": "symbol",
"format": "s",
"direction": "vertical",
"symbolType": "circle",
"labelFontSize": 12
}
}
Ключевой принцип: каждый параметр легенды либо управляет расположением, либо визуальным стилем, либо форматированием значений шкалы.
Легенда не существует отдельно от визуального кодирования данных. Она автоматически привязывается к каналам:
colorfillstrokesizeshapeopacityПример:
{
"mark": "point",
"encoding": {
"color": {
"field": "category",
"type": "nominal",
"legend": {
"title": "Тип категории"
}
}
}
}
В этом случае объект legend становится частью описания
канала color, а его структура определяет отображение
соответствующей шкалы.
Поле orient задаёт расположение легенды относительно
графика:
"left""right""top""bottom""none" — отключение отображения{
"legend": {
"orient": "bottom"
}
}
Управляет направлением элементов внутри легенды:
"vertical""horizontal"{
"legend": {
"direction": "horizontal"
}
}
Поле title определяет текст заголовка, который визуально
связывает легенду с данными.
{
"legend": {
"title": "Продажи по регионам"
}
}
Дополнительные свойства заголовка:
titleFonttitleFontSizetitleFontWeighttitleColortitleLimit — обрезка текстаПример расширенной настройки:
{
"legend": {
"title": "Категория товаров",
"titleFontSize": 14,
"titleFontWeight": "bold",
"titleColor": "#333"
}
}
Поле type определяет визуальную природу легенды и
зависит от шкалы:
"symbol" — для категориальных данных"gradient" — для непрерывных шкал"discrete" — дискретные значения{
"legend": {
"type": "gradient"
}
}
В Vega-Lite тип часто выводится автоматически, но его можно переопределить для точного контроля.
Определяет формат отображения значений:
{
"legend": {
"format": ".2f"
}
}
Применяется для числовых шкал, поддерживает d3-format синтаксис.
Указывает способ интерпретации формата:
"number""time""string"{
"legend": {
"formatType": "time",
"format": "%Y-%m"
}
}
Определяет форму маркеров:
"circle""square""triangle""diamond""stroke" (линия){
"legend": {
"symbolType": "square"
}
}
Контролирует размер маркеров:
{
"legend": {
"symbolSize": 100
}
}
Позволяют явно задать стили символов:
{
"legend": {
"symbolStrokeColor": "#000",
"symbolFillColor": "#ffcc00"
}
}
Метки легенды управляют текстом, отображающим значения шкалы.
Основные свойства:
labelFontlabelFontSizelabelColorlabelAnglelabelAlignlabelLimitПример:
{
"legend": {
"labelFontSize": 11,
"labelColor": "#666",
"labelLimit": 120
}
}
Позволяет явно задать список отображаемых значений в легенде:
{
"legend": {
"values": ["A", "B", "C"]
}
}
Используется для:
Легенда также имеет свойства контейнера:
paddingcornerRadiusstrokeColorfillColoroffset{
"legend": {
"padding": 10,
"strokeColor": "#ddd",
"cornerRadius": 4
}
}
Для сложных легенд применяются параметры разметки:
columns — число колонокrowPadding — отступ между строкамиcolumnPadding — отступ между колонками{
"legend": {
"columns": 2,
"rowPadding": 6,
"columnPadding": 12
}
}
Легенда напрямую связана с объектом scale. Поведение
определяется типом шкалы:
Пример:
{
"encoding": {
"color": {
"field": "value",
"type": "quantitative",
"scale": {
"scheme": "blues"
},
"legend": {
"type": "gradient"
}
}
}
}
Обобщённая структура включает группы свойств:
{
"legend": {
"orient": "",
"direction": "",
"type": "",
"title": "",
"format": "",
"formatType": "",
"symbolType": "",
"symbolSize": "",
"labelFont": "",
"labelFontSize": "",
"labelColor": "",
"titleFont": "",
"titleFontSize": "",
"titleColor": "",
"values": [],
"columns": "",
"rowPadding": "",
"columnPadding": "",
"padding": "",
"offset": ""
}
}
encodinglegendssignals)Пример Vega:
{
"legends": [
{
"fill": "colorScale",
"title": "Категории"
}
]
}
Свойства legend могут задаваться на разных уровнях:
encoding.<channel>.legend — локальноconfig.legend — глобальноscaleПриоритет:
локальный legend > config.legend > auto-scale
Если задано:
{
"legend": null
}
или
{
"legend": {
"orient": "none"
}
}
легенда полностью исключается из визуализации, даже если шкала категориальная или количественная.