Параметры и интерактивное поведение
// Спецификация отдельного представления
{
...,
"params": [ // Массив именованных параметров
{"name": ..., ...}
],
"mark": ...,
"encoding": ...,
...
}
Параметры — основа интерактивного поведения Vega-Lite. Параметр может быть простой переменной или выделением, которое преобразует действия пользователя, например щелчки и перетаскивание, в запрос к данным. Параметры можно применять в правилах кодирования, фильтрах, областях значений данных и строках выражений. Их также можно привязать к элементам ввода, таким как ползунок или раскрывающийся список.
Содержание страницы
Определение параметра
И переменные, и выделения поддерживают следующие свойства:
| Свойство | Тип | Описание |
|---|---|---|
name |
ParameterName |
Обязательное. Уникальное имя переменного параметра. Имя должно быть допустимым идентификатором JavaScript: состоять из букв, цифр, $ или _ и не начинаться с цифры. Зарезервированные имена datum, event, item и parent использовать нельзя. |
value |
любое значение | Начальное значение параметра. По умолчанию: undefined. |
bind |
Binding |
Привязывает параметр к внешнему элементу ввода, например ползунку, списку выбора или группе переключателей. |
Переменные параметры
Переменная — простейший параметр: значение определяется один раз и затем используется в разных местах спецификации. Здесь переменная cornerRadius управляет скруглением столбцов:
Значение переменной можно менять во время работы: привязать её к элементу управления, например ползунку или списку, либо обновить соответствующий сигнал через API представления Vega. В следующем примере ползунок управляет радиусом скругления:
Выражение expr
Помимо задания начального value, параметр можно создать с помощью выражения (expr).
| Свойство | Тип | Описание |
|---|---|---|
expr |
Expr |
Выражение для значения параметра. Оно может включать другие параметры; в этом случае значение автоматически обновляется в ответ на изменения параметров, от которых оно зависит. |
В этой диаграмме ширина внутренних полос зависит от высоты представления:
height — встроенный параметр. Другие встроенные имена перечислены ниже.
Встроенные и зарезервированные имена
- Параметры
width,height,padding,autosizeиbackgroundсоздаются автоматически из одноимённых свойств спецификации. Если эти параметры также объявлены в массивеparams, определения объединяются, а значения из массива имеют приоритет. - Имена
datum,item,eventиparentзарезервированы для переменных внутри выражений. Использовать их в качестве имён параметров нельзя. - Параметр с именем
cursorавтоматически управляет CSS-указателем мыши над представлением Vega-Lite. Подробнее см. документацию соответствующего сигналаcursorв Vega.
Параметры выделения
Выделение превращает действия пользователя — например щелчок или перетаскивание — в запрос к данным. Параметр становится выделением, когда у него есть свойство select. Оно определяет тип выделения и его поведение.
| Свойство | Тип | Описание |
|---|---|---|
select |
SelectionType, PointSelectionConfig, IntervalSelectionConfig |
Задаёт стандартную обработку событий и запрос к данным для выделения. Поддерживаются два типа:"point" — выбор нескольких дискретных значений данных. Первое выбирается щелчком (click), последующие добавляются или удаляются щелчком с Shift."interval" — выбор непрерывного диапазона значений данных перетаскиванием (drag). |
Попробуйте оба типа на примере выделения с именем pts ниже:
Если стандартных настроек недостаточно, передайте в select объект определения выделения. Он позволяет изменить события, поля, способ очистки и другие свойства.
Использование параметров
В строках выражений
В выражении к параметру обращаются непосредственно по имени. Имя выделения обозначает объект со свойствами, соответствующими полям данных, участвующим в нём. Эти поля задаются свойствами encodings или fields.
Здесь прозрачность точек определяется привязанной переменной, а размер — значением Miles_per_Gallon выбранной щелчком точки:
Как предикаты
Предикат возвращает true или false. Его можно записать выражением, например opacityVar == 25 или sel.Miles_per_Gallon > 75, но зачастую удобнее использовать сам параметр.
Значение переменного параметра при проверке преобразуется в логическое по правилам JavaScript. Предикат выделения возвращает true, если соответствующая запись данных попадает в выделение. Пустое выделение по умолчанию считается содержащим все значения: все точки имеют большой размер вначале и когда указатель перемещается в пустое пространство.
В следующем примере переменная меняет цвет точек, а выделение увеличивает их при наведении. Переключатель меняет свойство empty: при false пустому выделению не соответствует ни одна точка.
Подробнее об этом приёме — на странице «Условное кодирование».
Параметр можно использовать и для фильтрации одного представления с помощью другого. Ниже интервальное выделение brush задаётся на верхней диаграмме, а нижняя диаграмма рассеяния «Ускорение × Рабочий объём» (Acceleration × Displacement) показывает только точки, попавшие в выбранную область:
Области значений данных
Интервальное выделение может управлять границами интервалов группировки или областью значений шкалы. Оба приёма показаны на диаграммах «обзор и детали».
В первом примере область на нижнем графике изменяет интервалы группировки данных на верхнем и тем самым приближает выбранный диапазон:
Во втором примере выделение brush на нижнем графике меняет область значений шкалы x верхнего:
Похожий результат можно получить предварительной фильтрацией данных:
{
"vconcat": [{
"transform": [{"filter": {"param": "brush"}}],
...
}]
}
Прямое изменение границ обычно обеспечивает более быструю реакцию: вместо проверки каждой записи изменяются только границы интервалов или область значений шкалы.
Если выделение проецируется на несколько полей или каналов, в определении области значений нужно указать один из них. При проекции только на одно поле Vega-Lite определяет его автоматически. Например, для шкалы можно явно записать:
"scale": {"domain": {"param": "brush", "encoding": "x"}}; или"scale": {"domain": {"param": "brush", "field": "date"}}.
Границы интервалов группировки задаются похожим образом. Если выделение должно управлять шкалами собственного представления, используйте привязку к шкалам.
Настройка выделений по умолчанию
// Спецификация представления верхнего уровня
{
...,
"config": { // Объект конфигурации
"selection": { ... }, // Конфигурация выделений
...
}
}
Свойство selection объекта config задаёт свойства и преобразования по умолчанию для двух типов параметров выделения. Конфигурация может содержать следующие свойства:
| Свойство | Тип | Описание |
|---|---|---|
point |
PointSelectionConfigWithoutType |
Определение точечного выделения по умолчанию. Здесь можно задать все свойства и преобразования определения точечного выделения, кроме type. Например, {"on": "dblclick"} по умолчанию заполняет точечные выделения двойным щелчком. |
interval |
IntervalSelectionConfigWithoutType |
Определение интервального выделения по умолчанию. Здесь можно задать все свойства и преобразования определения интервального выделения, кроме type. Например, {"translate": false} по умолчанию запрещает перемещать интервальное выделение. |
Их можно переопределить в конкретном параметре выделения.