Подход проекта
Для Python существует множество отличных библиотек построения диаграмм:
- Matplotlib;
- Bokeh;
- Seaborn;
- Lightning;
- Plotly;
- встроенные средства построения диаграмм pandas;
- HoloViews;
- VisPy;
- pygg.
Каждая из них хорошо решает определённый круг задач.
Сложности для пользователей
Такое разнообразие усложняет выбор: пользователю приходится разбираться во множестве API, чтобы понять, какой из них лучше подходит для конкретной задачи. По мнению авторов Altair, эти библиотеки не ориентированы специально на статистическую визуализацию высокого уровня, поэтому пользователям приходится самостоятельно собирать решение из разных API. Тех, кто только начинает работать с данными, это заставляет сосредоточиться на изучении интерфейсов библиотек вместо исследования данных.
Ещё одна сложность — необходимость писать код даже для второстепенных деталей визуализации. Это создаёт лишнюю нагрузку: тип диаграммы — например, гистограмму или диаграмму рассеяния — часто можно определить по базовым сведениям, таким как интересующие столбцы и типы их данных.
Если нужно показать два числовых столбца, диаграмма рассеяния почти наверняка будет хорошей отправной точкой. При добавлении категориального столбца обычно имеет смысл закодировать его цветом или разбиением на панели. Когда автоматически определить подходящую визуализацию сложно, её можно собрать через простой пользовательский интерфейс без написания кода. Примеры таких интерфейсов — Tableau, а также Polestar и Voyager, созданные Interactive Data Lab.
Подход к проектированию и решение
Авторы считают, что эти сложности можно решить без создания ещё одной библиотеки с программным API и собственным механизмом отрисовки. Vega-Altair использует несколько уровней, опираясь на возможности существующих библиотек визуализации:
- Предоставляет ограниченный и простой Python API — Vega-Altair — с полностью декларативным подходом.
- Преобразует описание, заданное через этот API, в JSON, соответствующий спецификации Vega-Lite.
- Отрисовывает спецификацию с помощью существующих библиотек визуализации.
Такой подход позволяет начать исследование данных с более простого API, выбрать подходящий механизм отрисовки, а затем использовать его возможности для более сложной настройки диаграмм.
Декларативный API неизбежно даёт меньше свободы, чем полноценные программные API Matplotlib, Bokeh и других библиотек. Это осознанное решение: оно призвано упростить исследование данных с помощью визуализации.
Более подробное сравнение Plotly и Altair авторы приводят в ответе на StackOverflow.