Сортировка значений
// Спецификация одиночного представления или слоя
{
...,
"mark/layer": ...,
"encoding": {
"x": {
"field": ...,
"type": ...,
"sort": ..., // Сортировка
...
},
"y": ...,
...
},
...
}
Свойство sort канала кодирования задаёт порядок значений области данных шкалы. Допустимые значения зависят от типа шкалы поля; см. каналы кодирования.
Содержание страницы
Непрерывные поля
Для количественных и временных полей возможны:
"ascending"— по возрастанию, значение по умолчанию;"descending"— по убыванию.
Пример: обратная шкала X
Если указать для x значение "descending", ось пойдёт от максимального значения мощности к нулю:
Дискретные поля
Если шкала канала дискретная (порядковая или номинальная), sort может принимать "ascending", "descending", определение сортировки по другому каналу, определение поля сортировки, массив нужного порядка или null.
Естественный порядок значений
Для естественного порядка значений в JavaScript (например, "a" < "b") свойство sort может принимать:
"ascending"— сортировка значений поля по возрастанию (по умолчанию);"descending"— сортировка значений поля по убыванию.
По другому каналу
Укажите имя канала, например "x" или "y", чтобы сортировать по его значениям. Префикс минуса задаёт убывание: "-x" сортирует по полю канала x в обратном порядке.
Здесь категории на оси y упорядочены по значениям x по убыванию:
Это эквивалентно объекту с encoding и необязательным свойством order:
| Свойство | Тип | Описание |
|---|---|---|
encoding |
SortByChannel | Канал кодирования, по которому выполняется сортировка, например "x" или "y". |
order |
SortOrder или null | Порядок сортировки: "ascending" (по умолчанию), "descending" или null (без сортировки). |
Например, "sort": "-x" равнозначно "sort": {"encoding": "x", "order": "descending"}.
По другому полю
Чтобы сортировать данные по другому полю, задайте в sort определение поля сортировки канала со следующими свойствами:
| Свойство | Тип | Описание |
|---|---|---|
field |
Field | Поле данных, по которому выполняется сортировка. По умолчанию: поле, указанное во внешней ссылке на данные. |
op |
NonArgAggregateOp | Операция агрегирования, применяемая к полю перед сортировкой, например "count", "mean" или "median". Агрегирование необходимо, если каждому значению кодируемого поля соответствует несколько значений поля сортировки. Входные записи агрегируются с группировкой по кодируемому полю.Полный список операций приведён в документации aggregate. По умолчанию: "sum" для диаграмм с укладкой, в остальных случаях — "min". |
order |
SortOrder или null | Порядок сортировки: "ascending" (по умолчанию), "descending" или null (без сортировки). |
В примере значения age на оси Y отсортированы по сумме (sum) поля people. Он эквивалентен предыдущему примеру:
Собственный порядок
Массив в sort перечисляет предпочтительный порядок значений. Если указаны все значения поля, порядок будет точно соответствовать массиву:
Если указана только часть значений, они будут первыми в заданном порядке, а остальные последуют в исходном. Здесь сначала идут B, A и C, затем Z, Y, X:
Для дискретных временных полей массив может содержать объекты даты и времени. При единицах "month" и "day" допускаются названия месяцев или дней и их трёхбуквенные английские сокращения без учёта регистра. Ниже неделя начинается с понедельника:
Собственный порядок можно также задать через scale.domain, но тогда в массиве должны быть все возможные значения: пропущенные значения отображаются неправильно.
Без сортировки
Если sort равно null, поле не сортируется. Это эквивалентно sort: false в шкалах Vega.
Примечание: для каналов row и column значение null не поддерживается.