Графические примитивы

Графические примитивы — видимые элементы диаграммы. Их положение, размер, цвет и другие свойства кодируют значения полей данных или задаются постоянными значениями. Свойство mark в спецификации отдельного представления принимает имя типа примитива или объект с его настройками.

// Спецификация одиночного представления
{
  "data": ... ,
  "mark": ... ,       // Примитив
  "encoding": ... ,
  ...
}

Содержание страницы

Типы примитивов

Vega-Lite поддерживает базовые типы mark: "area" (область), "bar" (столбец), "circle" (круг), "line" (линия), "point" (точка), "rect" (прямоугольник), "rule" (линия правила), "square" (квадрат), "text" (текст), "tick" (штрих), "geoshape" (географическая фигура). Обычно каждой записи данных соответствует один примитив. Исключение — линии и области: они объединяют несколько записей в непрерывную форму.

Есть и составные примитивы — удобные шаблоны многослойных диаграмм: "boxplot" (ящик с усами), "errorband" (полоса неопределённости) и "errorbar" (отрезки погрешности).

Для простой столбчатой диаграммы достаточно указать строку "bar":

Объект определения примитива

// Спецификация одиночного представления
{
  ...,
  "mark": {
    "type": ...,       // Примитив
    ...
  },
  ...
}

Чтобы настроить свойства примитива, задайте mark объектом определения вместо строки с именем типа. Далее перечислены стандартные свойства базовых примитивов. У некоторых типов есть дополнительные свойства, описанные на их страницах. Например, точки поддерживают также shape и size.

Примечание: если заданы каналы свойств примитива, они переопределяют соответствующие свойства определения.

Общие свойства

Свойство Тип Описание
type Mark Тип примитива: базовый ("bar", "circle", "square", "tick", "line", "area", "point", "geoshape", "rule", "text") или составной ("boxplot", "errorband", "errorbar").
aria boolean, ExprRef Включать ли атрибуты ARIA (только при выводе SVG). При false выходной элемент SVG получает aria-hidden, исключая примитив из дерева доступности ARIA.
cursor Cursor, ExprRef Указатель мыши над примитивом. Допускается любое допустимое значение CSS cursor.
description string, ExprRef Текстовое описание примитива для доступности ARIA (только при выводе SVG). Если задано, определяет атрибут aria-label.
style string, string[] Строка или массив строк с именами собственных стилей примитива. Стиль — именованный набор стандартных значений свойств в конфигурации стилей. В массиве более поздние стили переопределяют ранние. Свойства примитива, явно заданные в encoding, переопределяют значения стиля.

По умолчанию: имя примитива, например "bar" для столбцов.

Примечание: собственный стиль дополняет стандартный. Столбец со "style": "foo" получает свойства из config.style.bar и config.style.foo; стиль foo имеет более высокий приоритет.
tooltip number, string, boolean, TooltipContent, ExprRef, null Текст подсказки при наведении мыши или объект, определяющий поля для её создания.

• true или {"content": "encoding"} — все поля из encoding.
• {"content": "data"} — все поля записи данных, на которую наведён указатель.
• null или false — без подсказки.

Подробнее см. всплывающие подсказки.

По умолчанию: null.
clip boolean, ExprRef Обрезать ли примитив по ширине и высоте содержащей его группы.
invalid MarkInvalidDataMode, null Режим обработки некорректных данных: определяет, как примитивы и соответствующие шкалы представляют null и NaN в непрерывных шкалах, для которых не задано выходное значение для некорректных данных.

• "filter" — исключает все некорректные значения из примитивов и шкал. Для линий, областей и trail соединяет допустимые точки, как если бы некорректных строк данных не было.
• "break-paths-filter-domains" — разрывает линии, области и trail на некорректных значениях. Для остальных примитивов равнозначен "filter". Все области данных шкал исключают отфильтрованные точки.
• "break-paths-show-domains" — разрывает пути на некорректных значениях; для остальных примитивов скрывает такие значения. Области данных всех шкал включают эти отфильтрованные точки.
• "show" или null — показывает все точки в примитивах и областях данных шкал. Каждая шкала использует выходное значение из config.scale.invalid; если оно не задано, некорректные значения получают тот же вид, что ноль (если шкала включает ноль), или минимальное значение (если не включает).
• "break-paths-show-path-domains" (по умолчанию) — равнозначен "break-paths-show-domains" для линий, областей и trail, а для остальных примитивов — "filter".

Примечание: если в config.scale.invalid задан выход для некорректных значений шкалы канала, все значения этой шкалы считаются допустимыми, поскольку могут дать определённый результат. Поля таких каналов не фильтруются и не вызывают разрывы путей.
order null, boolean Для примитивов line и trail значение null или false заставляет линии следовать исходному порядку записей в источнике данных.

Положение и смещение

Свойство Тип Описание
x number, "width", ExprRef Координата X примитива либо ширина горизонтального "bar" или "area", если не заданы x2 и width.

Значение может быть числом или строкой "width", обозначающей ширину диаграммы.
x2 number, "width", ExprRef Координата X2 для интервальных примитивов "area", "bar", "rect" и "rule".

Значение может быть числом или строкой "width", обозначающей ширину диаграммы.
width number, ExprRef, RelativeBandSize Ширина примитива: число, задающее постоянную ширину в пикселях, или определение относительного размера полосы. Например, {band: 0.5} означает половину полосы.
height number, ExprRef, RelativeBandSize Высота примитива: число, задающее постоянную высоту в пикселях, или определение относительного размера полосы. Например, {band: 0.5} означает половину полосы.
y number, "height", ExprRef Координата Y примитива либо высота вертикального "bar" или "area", если не заданы y2 и height.

Значение может быть числом или строкой "height", обозначающей высоту диаграммы.
y2 number, "height", ExprRef Координата Y2 для интервальных примитивов "area", "bar", "rect" и "rule".

Значение может быть числом или строкой "height", обозначающей высоту диаграммы.
xOffset number, ExprRef Смещение положения X.
x2Offset number, ExprRef Смещение положения X2.
yOffset number, ExprRef Смещение положения Y.
y2Offset number, ExprRef Смещение положения Y2.

Цвет

Свойство Тип Описание
filled boolean Использовать ли цвет примитива для заливки вместо обводки.

По умолчанию: false для point, line, rule, а также geoshape с источником данных graticule; иначе true.

Примечание: это свойство нельзя задавать в конфигурации стилей.
color Color, Gradient, ExprRef Цвет по умолчанию.

По умолчанию: ■ "#4c78a8".

Примечания: это свойство нельзя задавать в конфигурации стилей. Свойства fill и stroke имеют более высокий приоритет и переопределяют color.
fill Color, Gradient, null, ExprRef Цвет заливки по умолчанию. Имеет более высокий приоритет, чем config.color. Значение null убирает заливку.

По умолчанию: не задано.
stroke Color, Gradient, null, ExprRef Цвет обводки по умолчанию. Имеет более высокий приоритет, чем config.color. Значение null убирает обводку.

По умолчанию: не задано.
blend Blend, ExprRef Режим смешивания цвета элемента с текущим фоном. Допускается любое допустимое значение CSS mix-blend-mode.

По умолчанию: "source-over".
opacity number, ExprRef Общая непрозрачность, от 0 до 1.

По умолчанию: 0.7 для диаграмм без агрегирования с примитивами point, tick, circle, square или многослойных столбчатых диаграмм; иначе 1.
fillOpacity number, ExprRef Непрозрачность заливки, от 0 до 1.

По умолчанию: 1.
strokeOpacity number, ExprRef Непрозрачность обводки, от 0 до 1.

По умолчанию: 1.

Оформление обводки

Свойство Тип Описание
strokeCap StrokeCap, ExprRef Форма конца линии: "butt", "round" или "square".

По умолчанию: "butt".
strokeDash number[], ExprRef Массив чередующихся длин штрихов и промежутков для пунктирных или штриховых линий.
strokeDashOffset number, ExprRef Смещение в пикселях, с которого начинается отрисовка рисунка штрихов.
strokeJoin StrokeJoin, ExprRef Способ соединения отрезков линии: "miter", "round" или "bevel".

По умолчанию: "miter".
strokeMiterLimit number, ExprRef Предел острого соединения, при достижении которого оно заменяется скошенным.
strokeWidth number, ExprRef Толщина обводки в пикселях, неотрицательная.

В примере ниже линии границ имеют штриховку strokeDash: [6, 4]:

Гиперссылка

Примитивы могут действовать как гиперссылки, если задано свойство href или соответствующий канал. При заданном href свойство cursor по умолчанию получает значение "pointer", показывающее возможность перехода.

Свойство Тип Описание
href URI, ExprRef URL для перехода при нажатии мышью. Если задан, примитив действует как гиперссылка.

Настройки примитивов по умолчанию

// Спецификация представления верхнего уровня
{
  ...,
  "config": {
    "mark": ...,
    "area": ...,
    "bar": ...,
    "circle": ...,
    "line": ...,
    "point": ...,
    "rect": ...,
    "rule": ...,
    "geoshape": ...,
    "square": ...,
    "text": ...,
    "tick": ...
  }
}

Свойство mark объекта config задаёт значения по умолчанию для всех примитивов. Кроме того, config позволяет настраивать отдельные типы по их именам, например config.area.

Общая конфигурация config.mark поддерживает все стандартные свойства примитивов, кроме type, style, clip и orient. Параметры отдельных типов описаны на соответствующих страницах.

Примечания:

  1. Свойства определения примитива и каналы свойств примитива переопределяют значения конфигурации.
  2. Конфигурация примитивов не поддерживает свойства смещения.

Именованные стили

{
  // Спецификация верхнего уровня
  "config": {
    "style": {
      ...
    },
    ...
  }
}

Помимо стандартных свойств примитивов, описанных выше, значения по умолчанию можно задавать через именованные стили в свойстве style объекта конфигурации.

Свойство Тип Описание
style StyleConfigIndex Объект соответствий имён стилей и стандартных свойств примитивов с данным стилем. Ключи — имена стилей; значения должны быть допустимыми объектами конфигурации примитива.

Например, следующий стиль "triangle" задаёт стандартную форму и толщину обводки для точек:

{
  "style": {
    "triangle": {
      "shape": "triangle-up",
      "strokeWidth": 2
    }
  }
}

Чтобы применить стиль, укажите свойство style в объекте определения примитива.

Примечание: для оформления направляющих элементов (осей, заголовков панелей и легенд) Vega-Lite предоставляет следующие встроенные имена стилей:

  • "guide-label" — подписи осей, легенд и заголовков панелей.
  • "guide-title" — названия осей, легенд и заголовков панелей.
  • "group-title" — названия диаграмм.

Пример: подписи столбцов

Примитивы text можно использовать как подписи других примитивов: задайте им style, а через конфигурацию стилей настройте смещение (dx или dy), align и baseline.

См. также: аналогичный пример с настройкой смещения, выравнивания и базовой линии в определении примитива.