Типы параметров
Справочник по распространённым типам параметров, которые используются в свойствах спецификации Vega.
Справочник по типам параметров
- Any
- Array
- Boolean
- Color
- Date
- Gradient
- Number
- Object
- String
- URL
- Data
- Field
- Signal
- Compare
- Expr
- Value
- ColorValue
- FieldValue
- GradientValue
- TimeMultiFormat
Литеральные значения
# 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.