Разбиение на панели

Панельная диаграмма (trellis plot, или small multiples) — это серия похожих графиков, показывающих разные подмножества одного набора данных и облегчающих их сравнение.

В Vega-Lite есть два способа разбить представление на панели.

Первый — оператор facet, один из операторов композиции представлений. Это наиболее гибкий способ создания панельных диаграмм: его можно сочетать с другими операторами.

Второй — сокращённая запись через каналы кодирования facet, column или row.

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

Оператор facet

Свойство facet описывает разбиение данных, а spec — диаграмму внутри каждой панели:

{
  "facet": {
    ... // Определение панелей
  },
  "spec": ... // Внутреннее представление
}

Помимо общих свойств спецификации, здесь доступны:

Свойство Тип Описание
facet FacetFieldDef, FacetMapping Обязательное. Определение разбиения данных на панели: либо определение одного поля, либо объект соответствия каналов row и column определениям полей.
spec LayerSpec, FacetedUnitSpec Обязательное. Спецификация представления, которое разбивается на панели.
columns number Число столбцов в компоновке составного представления. По умолчанию: undefined — число столбцов не ограничено, все представления располагаются в один ряд. Для concat это эквивалентно hconcat, а для facet и repeat — использованию канала column. Примечания: 1) Свойство применяется только к оператору concat с переносом строк (не к hconcat/vconcat) и к операторам facet и repeat с одним определением поля или повторения, без вложенных определений row/column. 2) Значение columns: 1 эквивалентно vconcat для concat и использованию канала row для facet и repeat.

Определение поля панели

Определение поля панели имеет следующие свойства:

Свойство Тип Описание
bin boolean, BinParams, null Флаг разбиения количественного поля на интервалы, объект параметров разбиения или "binned", если данные канала x или y были разбиты до импорта в Vega-Lite.

true применяет параметры разбиения по умолчанию.
"binned" обозначает уже разбитые данные: поле начала интервала сопоставляется x (или y), а конца — x2 (или y2). Шкала и ось форматируются аналогично разбиению в Vega-Lite. Чтобы согласовать деления оси с шагом интервалов, задайте tickMinStep.

По умолчанию: false. См. bin.
field Field Обязательное свойство. Строка с именем поля, из которого берётся значение данных, или объект, задающий перебираемые значения оператора repeat. См. документацию field.

Точки и скобки позволяют обращаться к вложенным объектам: "field": "foo.bar" или "field": "foo['bar']". Если точки или скобки входят в само имя, экранируйте их обратной косой чертой; в JSON она записывается как \\, например "a\\.b" и "a\\[0\\]". Подробности — в документации field. Свойство field не обязательно, если aggregate равно "count".
timeUnit TimeUnit, BinnedTimeUnit, TimeUnitParams Единица времени, например year, yearmonth, month или hours, для временного поля либо временного поля, приведённого к порядковому типу.

По умолчанию: не задано (undefined). См. timeUnit.
type StandardType Тип измерения кодируемого поля или постоянного значения datum: "quantitative", "temporal", "ordinal", "nominal". Тип "geojson" используется для географических фигур.

Vega-Lite во многих случаях определяет тип автоматически. Однако для поля type обязателен, если: (1) поле не номинальное, а в кодировании не заданы aggregate (кроме argmin и argmax), bin, тип шкалы, собственный порядок sort или timeUnit; либо (2) для поля с bin или timeUnit нужна порядковая шкала.

Тип поля по умолчанию: "nominal", кроме следующих случаев.
"quantitative" — если заданы bin или агрегирование, кроме argmin/argmax; канал — latitude или longitude; либо указан количественный тип шкалы.
"temporal" — если задан timeUnit либо шкала time или utc.
"ordinal" — если задан собственный порядок сортировки, шкала ordinal, point или band, либо канал order.

Тип постоянного значения datum по умолчанию: "quantitative" для числа, "nominal" для строки, "temporal" для объекта даты и времени.

Примечания:
Тип описывает смысл данных, а не простой тип значения (число, строка и т. п.): числа могут быть количественными, порядковыми или номинальными.
Временное поле может содержать строку даты или времени — например, "2015-03-07 12:32:17", "17:01", "2015-03-16", "2015" — либо числовую временную метку, например 1552199579097.
С bin тип может быть "quantitative" для линейной интервальной шкалы или порядковым.
С timeUnit тип может быть "temporal" (по умолчанию, для временной шкалы) или порядковым.
При агрегировании тип относится к результату операции. Например, число различных категорий {"aggregate": "distinct", "field": "cat"} имеет тип "quantitative".
Вторичные каналы — например, x2, y2, xError, yError — не имеют type: он должен совпадать с типом основного канала X или Y.

См. документацию type.
header Header, null Объект, задающий свойства заголовка панели.

Примечания

  1. В отличие от определения позиционного поля, определение поля панели содержит header вместо scale и axis.
  2. Каналы facet, row и column представляют реальные поля данных, используемые для их разбиения, поэтому они не могут кодировать постоянное value. Не следует разбивать данные на панели по количественным полям без разбиения на интервалы, а по временным — без timeUnit.

Строки и столбцы панелей

Если facet задаётся объектом, он может содержать поля row и column:

Свойство Тип Описание
column FacetFieldDef Определение поля для горизонтального разбиения панельной диаграммы.
row FacetFieldDef Определение поля для вертикального разбиения панельной диаграммы.

Заголовки панелей

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

Подробнее см. документацию заголовков.

Примеры

Ниже приведены полные спецификации разбиения по строкам и разбиения с переносом панелей. Другие примеры доступны в галерее.

Панели по строкам

Следующая спецификация использует оператор facet, чтобы разделить гистограммы мощности автомобилей (Horsepower) по происхождению (Origin) и расположить их вертикально с помощью "row". Каждая диаграмма показывает гистограмму для одной группы: Европы, Японии или США.

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

Панели с переносом строк

Каналы facet, row и column

Каналы панелей (facet, row и column) — это каналы кодирования, служащие сокращённой записью спецификации панелей. Vega-Lite автоматически преобразует эту запись в спецификацию с оператором facet.

Свойства определений полей

Помимо field, type, bin и timeUnit, определения полей каналов row, column и facet могут содержать следующие свойства:

Свойство Тип Описание
align LayoutAlign Выравнивание представлений в строках и столбцах панелей. Поддерживаются "all", "each" и "none".

"none" — потоковая компоновка: соседние представления размещаются последовательно.
"each" — представления выравниваются в сетку, но размеры разных строк или столбцов могут различаться.
"all" — представления выравниваются, а все строки или столбцы получают одинаковый размер, определяемый максимальным наблюдаемым размером. Строковое значение применяется и к строкам, и к столбцам сетки.

По умолчанию: "all".
center boolean Центрировать ли представления панели относительно соответствующих строк или столбцов. По умолчанию: false.
spacing number Расстояние между представлениями панели в пикселях. По умолчанию: определяется свойством spacing конфигурации композиции представлений, стандартное значение — 20.

Кроме того, канал facet может содержать свойство columns:

Свойство Тип Описание
columns number Число столбцов в компоновке составного представления. По умолчанию: undefined — число столбцов не ограничено, все представления располагаются в один ряд. Для concat это эквивалентно hconcat, а для facet и repeat — использованию канала column. Примечания: 1) Свойство применяется только к оператору concat с переносом строк (не к hconcat/vconcat) и к операторам facet и repeat с одним определением поля или повторения, без вложенных определений row/column. 2) Значение columns: 1 эквивалентно vconcat для concat и использованию канала row для facet и repeat.

Каналы row и column могут содержать следующие свойства:

Свойство Тип Описание
align LayoutAlign Выравнивание представлений в строках и столбцах панелей. Поддерживаются "all", "each" и "none".

"none" — потоковая компоновка: соседние представления размещаются последовательно.
"each" — представления выравниваются в сетку, но размеры разных строк или столбцов могут различаться.
"all" — представления выравниваются, а все строки или столбцы получают одинаковый размер, определяемый максимальным наблюдаемым размером. Строковое значение применяется и к строкам, и к столбцам сетки.

По умолчанию: "all".
center boolean Центрировать ли представления панели относительно соответствующих строк или столбцов. По умолчанию: false.
spacing number Расстояние между представлениями панели в пикселях. По умолчанию: определяется свойством spacing конфигурации композиции представлений, стандартное значение — 20.

Примеры

Ниже приведены диаграммы с панелями по строкам и с переносом, в которых поля разбиения задаются через кодирование. Другие примеры доступны в галерее.

Панели по строкам через канал row

Vega-Lite преобразует эту запись в более гибкую спецификацию с оператором facet.

Сетка через row и column

Одновременное использование каналов "row" и "column" создаёт сетку небольших однотипных диаграмм.

Панели с переносом через канал facet

Эта сокращённая запись также преобразуется в спецификацию с оператором facet.

Общие и независимые шкалы

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

Чтобы переопределить это поведение, задайте "independent" для соответствующего свойства resolve:

Настройка панелей

// Спецификация представления верхнего уровня
{
  ...,
  "config": { // Объект конфигурации

    "facet": { // Конфигурация панелей
      "spacing": ...,
      "columns": ...,
    },
    ...
  }
}

Конфигурация панелей поддерживает следующие свойства:

Свойство Тип Описание
columns number Число столбцов в компоновке составного представления. По умолчанию: undefined — число столбцов не ограничено, все представления располагаются в один ряд. Для concat это эквивалентно hconcat, а для facet и repeat — использованию канала column. Примечания: 1) Свойство применяется только к оператору concat с переносом строк (не к hconcat/vconcat) и к операторам facet и repeat с одним определением поля или повторения, без вложенных определений row/column. 2) Значение columns: 1 эквивалентно vconcat для concat и использованию канала row для facet и repeat.
spacing number Расстояние по умолчанию между составными представлениями, в пикселях. По умолчанию: 20.