Компиляция Vega-Lite в Vega

Чтобы преобразовать спецификации Vega-Lite в Vega, используйте встроенный компилятор JavaScript или одну из поставляемых утилит командной строки.

Сначала установите Vega-Lite через npm (npm install vega-lite) или скачайте последний выпуск. Во втором случае также понадобятся Vega и D3.

Использование JavaScript

Чтобы получить скомпилированную спецификацию Vega в программе JavaScript, вызовите функцию vegaLite.compile:

var vgSpec = vegaLite.compile(vlSpec, options).spec;

Необязательный аргумент options — объект с одним или несколькими свойствами:

  • config — конфигурация по умолчанию;
  • logger — объект для вывода сообщений;
  • fieldTitle — функция формирования заголовков полей.

Собственная конфигурация

Передайте объект конфигурации как свойство config аргумента options функции compile. Свойства config, заданные непосредственно в спецификации Vega-Lite, имеют приоритет над конфигурацией, переданной функции compile.

Собственный вывод сообщений

По умолчанию предупреждения и другие сообщения выводятся в консоль JavaScript методами console.log/warn. Чтобы направить сообщения в другое место, передайте функции компиляции собственный объект logger:

var vgSpec = vegaLite.compile(vlSpec, {logger: logger}).spec;

Он должен реализовывать следующий интерфейс:

interface LoggerInterface {
  level: (_: number) => number | LoggerInterface;
  warn(...args: any[]): LoggerInterface;
  info(...args: any[]): LoggerInterface;
  debug(...args: any[]): LoggerInterface;
}

Собственная функция формирования заголовков полей

Чтобы изменить способ формирования заголовков осей и легенд для определения поля, передайте функцию fieldTitle в аргументе options функции compile:

const vgSpec = vegaLite.compile(vlSpec, {
  fieldTitle: function (fieldDef, config) {
    const fn = fieldDef.aggregate || fieldDef.timeUnit || (fieldDef.bin && 'bin');
    if (fn) {
      return `${fn.toUpperCase()}(${fieldDef.field})`;
    } else {
      return fieldDef.field;
    }
  },
}).spec;

Использование командной строки

В комплект входят утилиты для преобразования спецификаций Vega-Lite в Vega, SVG, PNG и PDF: соответственно vl2vg, vl2svg, vl2png и vl2pdf.

Каждая утилита принимает спецификацию Vega-Lite первым аргументом:

vl2svg spec.vl.json

Данные можно передать и через стандартный поток ввода:

cat spec.vl.json | vl2svg

У команды vl2vg есть необязательный аргумент p, который форматирует полученную спецификацию Vega:

vl2vg spec.vl.json -p

Проще всего запускать команды через npx. Он автоматически использует исполняемые файлы из локального каталога node_modules/.bin или общего кеша, при необходимости устанавливая пакеты для запуска. Заранее устанавливать Vega или Vega-Lite для работы npx не требуется:

npx vl2vg spec.vl.json

Для использования утилит в проекте добавляйте к командам префикс node_modules/.bin/. Можно также установить Vega и Vega-Lite глобально, хотя авторы не рекомендуют этот способ.

Если возникает ошибка Error: CanvasRenderer is missing a valid canvas or context, установите пакет canvas либо vega-cli.

Использование npx

Для запуска исполняемых файлов npm через npx укажите нужные пакеты и выберите команду. Например, справку по vl2png можно открыть так: npx -p vega -p vega-lite vl2png --help.