В спецификации Vega-Lite ключевым элементом описания визуализации
является поле mark, определяющее тип визуального
представления данных. Именно оно задаёт, каким образом каждая строка
данных будет отображена: как точка, линия, столбец, область или более
сложная геометрическая примитивная форма.
Базовая структура:
{
"mark": "bar"
}
или расширенная форма:
{
"mark": {
"type": "line",
"color": "steelblue",
"strokeWidth": 2
}
}
В Vega-Lite mark одновременно выполняет две функции:
encodingpointИспользуется для отображения отдельных наблюдений.
{
"mark": "point"
}
Типичные сценарии:
Ключевые свойства:
sizefilledshapecolorcircle и squareСпециализированные версии point с фиксированной
формой.
{
"mark": "circle"
}
{
"mark": "square"
}
Различие заключается в предустановленной геометрии, что снижает
необходимость явного задания shape.
lineИспользуется для отображения непрерывных зависимостей.
{
"mark": "line"
}
Поддерживает:
Пример расширенной настройки:
{
"mark": {
"type": "line",
"interpolate": "monotone",
"strokeWidth": 3
}
}
Ключевое свойство линейных графиков:
linearstepbasiscardinalmonotone{
"mark": {
"type": "line",
"interpolate": "step"
}
}
areaПредставляет заполненную область под линией.
{
"mark": "area"
}
Основные сценарии:
Расширенные настройки:
{
"mark": {
"type": "area",
"opacity": 0.6,
"interpolate": "monotone"
}
}
Особое значение имеет параметр stack (задаётся через
encoding), но mark влияет на визуальный характер заполнения.
barОдин из наиболее используемых типов.
{
"mark": "bar"
}
Семантика:
Ключевые свойства:
colorcornerRadiusbinSpacingsizeПример:
{
"mark": {
"type": "bar",
"cornerRadiusTopLeft": 4,
"cornerRadiusTopRight": 4
}
}
tickУпрощённая форма bar/point, используется для компактных распределений.
{
"mark": "tick"
}
Применение:
rectБазовая прямоугольная геометрия.
{
"mark": "rect"
}
Используется в:
textИспользуется для отображения подписей и числовых значений.
{
"mark": "text"
}
Ключевые свойства:
fontfontSizealignbaselinedx, dyПример:
{
"mark": {
"type": "text",
"fontSize": 12,
"color": "black"
}
}
ruleЛиния-ориентир.
{
"mark": "rule"
}
Используется для:
geoshapeИспользуется в сочетании с геоданными (GeoJSON).
{
"mark": "geoshape"
}
Особенности:
boxplotСводная статистическая визуализация.
{
"mark": "boxplot"
}
Отображает:
Параметры:
extentsizecolorerrorbarИспользуется для отображения погрешностей.
{
"mark": "errorbar"
}
Применяется в:
В Vega-Lite mark может быть объектом, задающим поведение
по умолчанию:
{
"mark": {
"type": "bar",
"color": "steelblue",
"opacity": 0.8
}
}
color — базовый цвет заливки/линииopacity — прозрачностьstroke — цвет обводкиstrokeWidth — толщина линииfill — принудительная заливкаtooltip — включение подсказокcursor — тип курсораВ Vega-Lite существует строгая иерархия:
encoding (данные)mark (дефолтные стили)configПример конфликта:
{
"mark": {
"color": "red"
},
"encoding": {
"color": {
"value": "blue"
}
}
}
Результат: будет использован синий цвет, так как
encoding имеет более высокий приоритет.
mark выступает связующим звеном между данными и
графической интерпретацией. Он определяет:
В отличие от императивных библиотек, где форма рисуется вручную,
Vega-Lite трактует mark как декларацию визуального класса,
а не набор инструкций.
{
"layer": [
{
"mark": "line"
},
{
"mark": "point"
}
]
}
Такой подход позволяет:
Через encoding.condition mark может изменять визуальный
эффект без изменения типа:
{
"mark": "bar",
"encoding": {
"color": {
"condition": {
"test": "datum.value > 0",
"value": "green"
},
"value": "red"
}
}
}
Выбор mark влияет не только на визуальную семантику, но
и на:
Например:
point с тысячами точек предпочтительнее в Canvasrect эффективен для heatmap благодаря батчингуline может быть оптимизирован через
path-компиляциюВ Vega (низкоуровневой системе):
{
"marks": [
{
"type": "rect",
"from": {"data": "table"},
"encode": {
"enter": {...}
}
}
]
}
В Vega-Lite:
{
"mark": "bar"
}
Различие заключается в уровне абстракции:
mark