Vega и D3

Уже существует немало прекрасных инструментов для визуализации в интернете. Один из главных — D3 (Data-Driven Documents), созданный Майком Бостоком и его коллегами из группы визуализации Стэнфордского университета, ныне Лаборатории интерактивных данных Вашингтонского университета.

Vega не задумывалась как «замена» D3. D3 намеренно остаётся библиотекой более низкого уровня. На раннем этапе её разработки мы даже называли D3 «ядром визуализации», а не набором инструментов или фреймворком. Помимо создания визуализаций с индивидуальным оформлением, D3 служит основой для инструментов более высокого уровня. Vega — один из таких инструментов, и в её реализации широко используется D3.

Vega предоставляет язык описания визуализаций более высокого уровня, построенный поверх D3. По замыслу D3 сохраняет преимущество в выразительности и в некоторых случаях лучше подходит для воплощения новых идей. В то же время мы стремимся сделать Vega удобной для широкого круга распространённых визуализаций, которые можно настраивать под свои задачи. В устройстве Vega использованы идеи, разработанные нами для Protovis и D3, а также результаты многолетних исследований в Стэнфорде и Вашингтонском университете.

У нас было несколько причин создать Vega:

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

  • Упростить повторное использование и распространение визуализаций. Каждая спецификация Vega определяет компонент графика, который можно использовать повторно и передавать другим. Входные данные тоже можно включить в спецификацию, получив самостоятельное описание. По сути, Vega предлагает формат файла для сохранения и распространения проектов визуализации.

  • Дать программам возможность создавать визуализации. Освоив D3, можно писать код вручную с удовольствием и высокой скоростью. Однако D3 не всегда удобна, когда визуализации нужно создавать автоматически. Одна из целей Vega — стать «целевым языком», на котором программы смогут динамически формировать визуализации. Программа собирает спецификацию Vega — обычный объект JSON — и передаёт её среде выполнения Vega для отображения данных. На основе Vega созданы новые системы и исследовательские проекты, включая язык более высокого уровня Vega-Lite и интерактивные приложения Lyra и Voyager.

  • Повысить производительность и гибкость платформы. D3 тесно связывает объекты данных с элементами объектной модели документа (DOM). У этого подхода есть преимущества: оформление через CSS, прозрачность работы и простая отладка. Но основа D3 ограничена отображением через DOM. Vega, напротив, абстрагирует отрисовку и обработку событий, что даёт больше свободы. Благодаря собственному графу сцены вместо DOM Vega может отображать визуализации как через HTML5 Canvas, так и через SVG. Canvas способен обеспечить более высокую скорость отрисовки и лучше масштабироваться: при полной перерисовке компонента он часто в 2–10 раз быстрее SVG, хотя такие сравнения требуют оговорок. SVG, в свою очередь, подходит для векторной графики с неограниченным масштабированием и печатным качеством. Vega можно расширить и для других систем отрисовки, например WebGL.

Выбор инструмента всегда зависит от задачи. Мы ожидаем, что D3 часто будет лучшим выбором для воплощения новых идей в дизайне визуализаций. Для распространённых, но настраиваемых графиков, программного создания визуализаций и гибкой отрисовки Vega может сделать визуализацию данных доступнее в новых инструментах и веб-приложениях.