Данные
Как и модель данных Vega, основная модель данных Vega-Lite использует табличные данные, похожие на электронную таблицу или таблицу базы данных. Набор данных состоит из записей; каждая запись может содержать любое число именованных полей.
Свойство data задаёт источник данных внутри спецификации. Можно передать записи прямо в спецификации через values, указать адрес файла через url или объявить именованный источник через name. Именованный источник можно создать пустым и заполнить во время выполнения либо через свойство верхнего уровня datasets.
Кроме того, Vega-Lite включает генераторы данных, которые создают наборы данных: например, числовые последовательности или географические объекты в формате GeoJSON — координатную сетку и сферу.
Содержание страницы
- Встроенные данные
- Данные по адресу URL
- Именованные источники
- Форматы файлов
- Генераторы данных
- Наборы данных в
datasets
Виды источников данных
Встроенные данные
Для встроенных данных укажите массив записей в values:
| Свойство | Тип | Описание |
|---|---|---|
values |
InlineDataset | Полный набор данных, включённый в спецификацию. Это может быть массив объектов или простых значений, объект или строка. Простые значения массива загружаются как объекты с полем data. Строки разбираются согласно указанному типу формата. |
name |
string | Задаёт имя источника для привязки данных во время выполнения. |
format |
DataFormat | Объект, задающий формат разбора данных. |
В следующей спецификации прямо записана таблица из девяти строк и двух столбцов — a и b:
Если values содержит простой массив значений, Vega-Lite превращает каждый элемент в объект с полем data. Например, [5, 3, 8, 1] будет загружен как:
[{"data": 5}, {"data": 3}, {"data": 8}, {"data": 1}]
Можно встроить и текстовую строку; её содержимое будет разобрано по указанному типу формата:
Данные по адресу URL
Свойство url указывает файл с данными. Тип входного файла можно уточнить через format.type; если формат не задан, Vega-Lite определяет его по расширению файла.
| Свойство | Тип | Описание |
|---|---|---|
url |
string | URL для загрузки набора данных. Укажите format.type, чтобы обеспечить корректный разбор загруженных данных. |
name |
string | Задаёт имя источника для привязки данных во время выполнения. |
format |
DataFormat | Объект, задающий формат разбора данных. |
Следующий пример загружает cars.json. Формат "json" определяется автоматически:
Именованные источники данных
Данные можно добавить во время выполнения через API представления Vega. Задайте имя в data.name:
| Свойство | Тип | Описание |
|---|---|---|
name |
string | Задаёт имя источника для привязки данных во время выполнения. Новые данные могут изменить компоновку, однако Vega не всегда меняет размеры диаграммы автоматически. Чтобы обновлять компоновку вместе с данными, настройте autosize или явно вызовите view.resize. |
format |
DataFormat | Объект, задающий формат разбора данных. |
{
"name": "myData"
}
Используйте API представления Vega, чтобы загрузить данные во время выполнения и обновить диаграмму. Вот пример с Vega-Embed:
vegaEmbed('#vis', spec).then((res) => {
const data = [/* массив записей */];
res.view.insert('myData', data).run();
});
Можно также изменять данные диаграммы через набор изменений (changeset), как в примере потоковой передачи данных.
Формат данных
Объект format описывает тип входных данных и дополнительные правила разбора.
| Свойство | Тип | Описание |
|---|---|---|
type |
string | Тип входных данных: "json", "csv", "tsv", "dsv". По умолчанию: определяется по расширению URL файла; если расширения нет, используется "json". |
parse |
Parse или null | Значение null отключает определение типов по спецификации; определение типов по самим данным сохраняется. Можно также передать объект явных правил разбора: ключи — имена полей, значения — "number", "boolean", "date" или null (не разбирать поле). Например, "parse": {"modified_on": "date"} преобразует поле modified_on каждой записи в значение Date. Для "date" используется JavaScript Date.parse(). Конкретный формат даты можно указать в синтаксисе d3-time-format, например {foo: "date:'%m%d%Y'"}. Аналогично поддерживается разбор UTC: {foo: "utc:'%m%d%Y'"}. Подробнее — в разделе UTC. |
JSON
Файл JSON обычно содержит массив объектов с именованными полями. Это формат по умолчанию, используемый при отсутствии свойства format. Если format указан, его свойство type должно иметь значение "json". Кроме того, поддерживается следующее свойство:
| Свойство | Тип | Описание |
|---|---|---|
property |
string | Свойство JSON, содержащее нужные данные. Используется, если загруженный файл содержит окружающую структуру или метаданные. Например, "property": "values.features" соответствует обращению к json.values.features в загруженном объекте. |
CSV
Загрузка файла со значениями, разделёнными запятыми (CSV). Дополнительные свойства не поддерживаются.
TSV
Загрузка файла со значениями, разделёнными табуляцией (TSV). Дополнительные свойства не поддерживаются.
DSV
Загрузка текстового файла с произвольным разделителем. Это обобщённый вариант CSV и TSV.
| Свойство | Тип | Описание |
|---|---|---|
delimiter |
string | Разделитель значений в текстовом файле. Должен состоять из одного символа — одной 16-битной кодовой единицы. Разделители ASCII подходят, эмодзи — нет. |
TopoJSON
Vega-Lite загружает корректный файл TopoJSON и преобразует его в GeoJSON. Выберите один из двух способов извлечения географических объектов:
| Свойство | Тип | Описание |
|---|---|---|
feature |
string | Имя набора объектов TopoJSON, который нужно преобразовать в коллекцию географических объектов GeoJSON. Например, карта мира может содержать набор "countries": это свойство извлекает его и создаёт отдельный объект GeoJSON для каждой страны. |
mesh |
string | Имя набора объектов TopoJSON, который нужно преобразовать в сетку. Как и feature, извлекает именованный набор, но возвращает единую сетку вместо отдельных объектов GeoJSON. Это позволяет эффективнее рисовать границы и другие географические элементы, которые не требуется связывать с отдельными странами, штатами или округами. |
Свойства feature и mesh взаимоисключающие.
Генераторы данных
Числовая последовательность
Генератор sequence создаёт числа от start до stop с шагом step. Верхняя граница не включается. По умолчанию каждое число помещается в поле data; свойство as меняет его имя.
| Свойство | Тип | Описание |
|---|---|---|
start |
number | Начальное значение последовательности, включаемое в результат. |
stop |
number | Конечное значение последовательности, не включаемое в результат. |
step |
number | Шаг между соседними значениями последовательности. По умолчанию: 1. |
as |
FieldName | Имя поля с генерируемыми значениями. По умолчанию: "data". |
Пример генерирует числовую область и строит синусоиду с помощью преобразования calculate:
Географическая сетка
Географическая сетка состоит из линий широты и долготы. Генератор graticule создаёт её в формате GeoJSON. Значение true использует настройки по умолчанию; объект позволяет задать параметры:
| Свойство | Тип | Описание |
|---|---|---|
extent |
[[number, number], [number, number]] | Задаёт одинаковые границы для основных и вспомогательных линий сетки. |
extentMajor |
[[number, number], [number, number]] | Границы основных линий сетки — массив из двух пар координат. |
extentMinor |
[[number, number], [number, number]] | Границы вспомогательных линий сетки — массив из двух пар координат. |
precision |
number | Точность построения сетки в градусах. По умолчанию: 2.5. |
step |
[number, number] | Задаёт одинаковые угловые интервалы для основных и вспомогательных линий сетки. |
stepMajor |
[number, number] | Угловые интервалы между основными линиями сетки. По умолчанию: [90, 360]. |
stepMinor |
[number, number] | Угловые интервалы между вспомогательными линиями сетки. По умолчанию: [10, 10]. |
В примере пользовательская сетка показана с ортографической проекцией:
Сфера
Объект GeoJSON {"type": "Sphere"} обозначает весь земной шар. Генератор sphere добавляет набор данных с одной такой записью. Содержимое набора — [{"type": "Sphere"}]. Сфера может служить фоновым слоем карты, обозначающим поверхность Земли. Единственное свойство генератора задаётся значением true или пустым объектом {}.
Следующий пример строит карту из двух слоёв: светло-голубой сферы и чёрной географической сетки.
Наборы данных в datasets
Свойство верхнего уровня datasets хранит несколько встроенных наборов данных по именам. Это удобно, если один набор нужен в разных местах спецификации: определите его один раз и обращайтесь к нему через data.name.
"datasets": {
"somedata": [1,2,3]
},
"data": {
"name": "somedata"
}