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

Справочник по распространённым типам параметров, которые используются в свойствах спецификации Vega.

Справочник по типам параметров

Литеральные значения

# Any или *

Принимает любое литеральное значение: строку, число, логическое значение или null.


# Array или Type[ ]

Принимает массивы, например [], [1, 2, 3], ["foo", "bar"]. Если элементы массива должны иметь определённый тип, он указывается перед квадратными скобками: например, Number[ ] или String[ ].

В большинстве случаев элементы массива могут быть ссылками на сигналы, например [{"signal": "width"}, {"signal": "height"}].


# Boolean

Принимает логические значения, например true и false.


# Color

Принимает корректную строку цвета CSS, например #f304d3, #ccc, rgb(253, 12, 134) или steelblue.


# Date

Корректный объект JavaScript Date или временная метка. JSON не поддерживает даты непосредственно, поэтому в спецификации Vega дату и время можно задать числовой меткой — количеством миллисекунд с начала эпохи UNIX, как возвращает Date.getTime(), — или выражением сигнала, например {"signal": "datetime(2001, 2, 3)"}.


# Gradient ≥ 5.4

Принимает объект, задающий цветовой градиент. Чтобы определить линейный градиент на основе цветовой шкалы, используйте GradientValue.

Например:

{
  "gradient": "linear",
  "stops": [
    {"offset": 0.0, "color": "red"},
    {"offset": 0.5, "color": "white"},
    {"offset": 1.0, "color": "blue"}
  ]
}

# Линейный градиент

Линейный градиент интерполирует цвета вдоль линии от начальной до конечной точки. По умолчанию он идёт горизонтально слева направо. Направление задаётся свойствами x1, y1, x2 и y2. Все координаты определяются в нормализованной системе [0, 1] относительно ограничивающей рамки окрашиваемого элемента.

Имя Тип Описание
gradient String Обязательно. Тип градиента. Для линейного градиента укажите "linear".
x1 Number Начальная координата x линейного градиента в нормализованной системе [0, 1] (по умолчанию 0).
y1 Number Начальная координата y линейного градиента в нормализованной системе [0, 1] (по умолчанию 0).
x2 Number Конечная координата x линейного градиента в нормализованной системе [0, 1] (по умолчанию 1).
y2 Number Конечная координата y линейного градиента в нормализованной системе [0, 1] (по умолчанию 0).
stops GradientStop[ ] Обязательно. Массив цветовых точек, задающих последовательность цветов градиента.

# Радиальный градиент

Радиальный градиент интерполирует цвета между двумя окружностями: от границы внутренней до границы внешней. По умолчанию он идёт от центра системы координат (внутренняя окружность нулевого радиуса) к внешней окружности радиуса 0,5. Центры окружностей задаются свойствами x1, y1, x2 и y2, а радиусы — свойствами r1 и r2. Все координаты определяются в нормализованной системе [0, 1] относительно ограничивающей рамки окрашиваемого элемента. Значение 1 соответствует большему из размеров рамки — ширине или высоте.

Имя Тип Описание
gradient String Обязательно. Тип градиента. Для радиального градиента укажите "radial".
x1 Number Координата x центра внутренней окружности в нормализованной системе [0, 1] (по умолчанию 0,5).
y1 Number Координата y центра внутренней окружности в нормализованной системе [0, 1] (по умолчанию 0,5).
r1 Number Радиус внутренней окружности в нормализованной системе [0, 1] (по умолчанию 0).
x2 Number Координата x центра внешней окружности в нормализованной системе [0, 1] (по умолчанию 0,5).
y2 Number Координата y центра внешней окружности в нормализованной системе [0, 1] (по умолчанию 0,5).
r2 Number Радиус внешней окружности в нормализованной системе [0, 1] (по умолчанию 0,5).
stops GradientStop[ ] Обязательно. Массив цветовых точек, задающих последовательность цветов градиента.

# Цветовая точка градиента

Цветовая точка градиента состоит из значения Color и доли offset, задающей её положение.

Имя Тип Описание
offset Number Обязательно. Доля, определяющая положение цветовой точки внутри градиента.
color Color Обязательно. Цвет в этой точке градиента.


# Number

Принимает числа, например 1, 3.14 и 1e5.


# Object

Принимает литеральные объекты, например {"left":5, "right":30, "top":5, "bottom":50}. Допустимые имена и типы свойств зависят от конкретного параметра; подробности приведены в его описании.


# String

Принимает строки, например "bold", "step-before" и "".


# URL

Принимает корректную строку URL, указывающую на внешний сайт или ресурс, например "data/stocks.csv", "images/logo.png" или "https://vega.github.io/".

Вернуться к началу

Типы данных и сигналов

# Data

Принимает строку с именем набора данных, например "table" или "nodes".

Вернуться к началу

# Field

Принимает строку с именем поля данных, например "amount", "source.x" или "target['x']".

Вместо строки можно передать объект со строковым свойством field, например {"field": "amount"} или {"field": "source.x"}. Свойство as позволяет задать другое имя выходного поля: {"field": "inputName", "as": "outputName"}.

Корректные пути доступа к свойствам объекта JavaScript с точечной (.) или скобочной (foo['bar']) записью преобразуются в обращения к вложенным объектам. Если точка входит в само имя поля и не обозначает вложенное свойство, экранируйте её ("my\\.field") или заключите имя поля в квадратные скобки ("[my.field]").

Вернуться к началу


# Signal

Принимает объект со ссылкой на значение сигнала или выражение. Свойство signal должно содержать строку с корректным именем сигнала либо строку выражения, вычисляющего значение. Например: {"signal": "width"} или {"signal": "width / 2"}.

Вернуться к началу


# Compare

Принимает объект, задающий правило сравнения для сортировки. У него могут быть два свойства: field указывает поля данных, по которым выполняется сортировка, а order — нужный порядок для каждого поля. Каждое свойство принимает строку (сортировка по одному полю) или массив строк (по нескольким полям).

Свойство order необязательно. Его значения — "ascending" (по возрастанию) или "descending" (по убыванию). Если order не задано либо в нём меньше элементов, чем в field, для оставшихся полей по умолчанию применяется сортировка по возрастанию.

Правило сравнения по одному полю:

{"field": "amount", "order": "ascending"}

Правило сравнения по нескольким полям:

{
  "field": ["amount", "date"],
  "order": ["descending", "ascending"]
}

Правило сравнения нельзя целиком задать одним экземпляром сигнала. Однако свойства field и order по отдельности могут использовать сигналы:

{
  "field": {"signal": "sortField"},
  "order": {"signal": "sortOrder"}
}

Если поле сортировки равно null, оно и соответствующее значение порядка игнорируются, словно такого элемента нет.

Вернуться к началу


# Expr

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

Значения этого типа задаются двумя способами: ссылкой field или ссылкой expr.

Ссылка field находит значение поля так же, как параметр типа Field:

{
  "type": "wordcloud",
  ...
  "rotate": {"field": "angle"} // поиск поля "angle" для каждой записи
}

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

{
  "type": "wordcloud",
  ...
  "rotate": {"expr": "datum.minAngle + round(90*random() - 45)"} // вычислить для каждой записи
}

В отличие от ссылок на сигналы, вычисляемых один раз для параметра, ссылки expr работают как анонимные (лямбда-) функции и вычисляются отдельно для каждого объекта данных. И сигналы, и выражения expr пересчитываются при изменении предшествующей зависимости.

Ссылки field и expr могут содержать свойство as, задающее имя выходного поля.

Вернуться к началу


# Value

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

Базовое значение

Базовое значение задаётся одним из следующих свойств:

Имя Тип Описание
signal String Имя сигнала или выражение.
color ColorValue Задаёт цвет ссылками на значения отдельных цветовых каналов. См. описание ColorValue.
field FieldValue Имя или описание поля данных. См. описание FieldValue.
value Any Постоянное значение: число, логическое значение, строка, цвет или градиент.

Свойства перечислены в порядке приоритета. Например, если задано signal, свойства color, field и value игнорируются. Для некоторых значений scale базовое значение можно не задавать; его также можно опустить для представления null.

Преобразования шкалой

После определения базового значения его можно преобразовать с помощью шкалы. Доступны следующие свойства:

Имя Тип Описание
scale String | FieldValue Имя применяемой шкалы. Если параметр задан объектом, он содержит значение поля, по которому имя шкалы находится динамически. Например, {"datum": "s"} берёт имя шкалы из поля s текущего объекта данных, а {"parent": "t"} — из поля t объекта данных родительской группы.
band Number Ширина интервала шкалы, умноженная на указанное число. Свойство действует только для интервальных шкал. Например, {"band": 1} задаёт полную ширину интервала, а {"band": 0.5} — половину. Если базовое значение определено, вычисленная ширина добавляется к результату преобразования шкалой. Так, {"field": "a", "scale": "s", "band": 0.5} соответствует scale(datum.a) + 0.5 * scale.bandwidth().

Модификаторы значения

После преобразования шкалой результат можно дополнительно изменить следующими свойствами. Общая формула ссылки на значение: pow(scale(baseValue), exponent) * mult + offset. Модификаторы предназначены только для числовых значений.

Имя Тип Описание
exponent Number | Value Возводит значение в указанную степень, как pow(value, exponent). Если свойство задано, операция выполняется сразу после преобразования шкалой.
mult Number | Value Множитель значения, как в mult * value. Применяется после преобразования шкалой и возведения в степень.
offset Number | Value Добавляемое к итоговому значению смещение, как в value + offset. Применяется после преобразования шкалой, возведения в степень и умножения.
round Boolean Нужно ли округлять итоговое значение (по умолчанию false). Округление выполняется после всех других модификаторов. При true соответствует round(value).

Примеры

  • {"value": 5} — постоянное значение 5.
  • {"field": "price"} — значение поля price текущей записи.
  • {"field": "index", "mult": 20} — значение поля index текущей записи, умноженное на 20.
  • {"scale": "x", "value": 0} — результат преобразования значения 0 шкалой x.
  • {"scale": "y", "field": "price"} — результат преобразования поля price текущей записи шкалой y.
  • {"scale": "x", "band": 1} — ширина интервала шкалы x. Шкала должна иметь тип band.
  • {"scale": "x", "band": 1, "offset": -1} — ширина интервала шкалы x, уменьшенная на один пиксель.

Вернуться к началу


# ColorValue

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

Обычно цвет задаётся одним значением RGB. Но иногда нужно обратиться к отдельным каналам или использовать другое цветовое пространство. В следующем примере красный и синий каналы RGB заданы константами, а зелёный определяется преобразованием шкалой.

{
  "fill": {
    "color": {
      "r": {"value": 255},
      "g": {"scale": "green", "field": "g"},
      "b": {"value": 0}
    }
  }
}

Vega поддерживает следующие цветовые пространства:

Имя Описание
RGB Красный, зелёный и синий каналы задаются свойствами "r", "g" и "b".
HSL Цветовой тон, насыщенность и светлота задаются свойствами "h", "s" и "l".
LAB Светлота, канал A (контраст зелёного и красного) и канал B (контраст синего и жёлтого) задаются свойствами "l", "a" и "b". LAB — перцептивное цветовое пространство, расстояния в котором основаны на человеческом восприятии цветов.
HCL Цветовой тон, цветность и светлота задаются свойствами "h", "c" и "l". HCL — простое преобразование LAB, использующее полярные координаты в плоскости AB.

Вернуться к началу


# FieldValue

Принимает строку или объект, указывающий поле данных. Если передана строка, она используется как имя поля. Для объекта доступны следующие свойства:

Свойство Тип Описание
signal String Вычислить значение сигнала или выражения и использовать результат как имя искомого поля.
datum FieldValue Найти поле с заданным именем в текущем объекте данных. Аналогично передаче имени поля строкой.
group FieldValue Использовать свойство экземпляра охватывающего группового примитива, например "field": {"group": "width"} или "field": {"group": "height"}.
parent FieldValue Использовать поле объекта данных охватывающего группового примитива, например "field": {"parent": "fieldInParentData"}.

Эти свойства можно вкладывать друг в друга для косвенного поиска полей. Например, {"parent": {"datum": "f"}} сначала получит значение поля f текущего объекта данных примитива. Затем это значение будет использовано как имя свойства в объекте данных охватывающего группового примитива.

Кроме того, ссылки group и parent могут содержать необязательное свойство level для обращения к группам более высокого уровня. Например, {"parent": "f", "level": 2} использует значение поля f из данных группы на два уровня выше. По умолчанию level = 1, то есть непосредственная родительская группа.

Вернуться к началу


# GradientValue

Определяет линейный градиент на основе диапазона шкалы для каналов кодирования fill и stroke. Чтобы задать градиент напрямую, без ссылки на шкалу, укажите определение Gradient в свойстве value кодирования.

Свойство Тип Описание
gradient String | FieldValue Обязательно. Имя шкалы, диапазон которой задан непрерывной цветовой схемой.
start Number[ ] Начальная координата градиента в виде массива [x, y] в нормализованной системе координат [0, 1]. Координата задаётся относительно границ окрашиваемого элемента. По умолчанию [0, 0].
stop Number[ ] Конечная координата градиента в виде массива [x, y] в нормализованной системе координат [0, 1]. Координата задаётся относительно границ окрашиваемого элемента. По умолчанию [1, 0]: горизонтальный градиент на всю ширину элемента.
count Number Рекомендуемое количество точек выборки из цветовой шкалы.

Пример

{
  "encode": {
    "fill": {
      "gradient": "colorScale",
      "start": [0, 1],
      "stop": [0, 0],
      "count": 10
    }
  }
}

Вернуться к началу


# TimeMultiFormat

Объект, задающий собственные форматы для значений даты и времени разной точности. Он должен подходить для передачи методу API timeFormat:

  • Ключи объекта должны быть допустимыми единицами времени, например year или month.
  • Значения объекта должны быть допустимыми строками формата d3-time-format.

Эти значения вместе с форматами по умолчанию для неуказанных единиц создают функцию динамического форматирования. Она выбирает формат в зависимости от точности входной даты: например, от того, совпадает ли дата с началом года, месяца, дня или часа. Подробнее см. документацию API timeFormat.

Вернуться к началу