Vega — декларативный язык описания визуализаций данных, разработанный для создания интерактивных и статических графиков в веб-среде. Он задаёт представление данных и правила визуального отображения в виде структурированных спецификаций на базе JSON, которые затем интерпретируются визуализационной системой для рендеринга с использованием Canvas или SVG. Vega служит промежуточным уровнем между низкоуровневыми API рисования и высокоуровневыми инструментами, предоставляя формальные примитивы для описания данных, преобразований, шкал, осей, маркеров и взаимодействий.
Проект возник как попытка формализовать и стандартизировать способ задания визуализаций, облегчая воспроизводимость и переносимость графиков между приложениями. Vega поддерживает декларативную модель, где спецификация описывает «что» должно быть показано, а не «как» рисовать, и включает механизмы для обработки событий и интерактивности, что делает её пригодной как для аналитических панелей, так и для образовательных и научных визуализаций. На основе Vega были созданы более высокоуровневые библиотеки, использующие её спецификации как основу для упрощённого создания распространённых типов графиков.
- Декларативность: визуализация описывается в виде JSON-спецификации без императивного кода рендеринга.
- Поддержка Canvas и SVG: реализация рендеринга допускает использование различных технологий вывода для разных целей.
- Преобразования данных: встроенные операции для агрегации, фильтрации, биннинга и вычисляемых полей.
- Шкалы и оси: гибкая настройка шкал, форматирования и отображения координатных систем.
- Марки и слои: описания примитивов (точки, линии, столбцы и т.д.) и их композиция для сложных визуализаций.
- Интерактивность: события, селекции и трансформации, позволяющие создавать отклики на пользовательские действия.
- Переиспользуемость: спецификации можно сохранять, передавать и повторно использовать в разных приложениях.
- Совместимость с инструментами: служит основой для высокоуровневых библиотек и конструкторов визуализаций.
- Портируемость: человеко-читаемый формат JSON облегчает генерацию и преобразование спецификаций программными средствами.
- Расширяемость: архитектура позволяет добавлять новые типы трансформаций и рендеринговые стратегии.