Сюжетный экспресс в сравнении с Альтаиром / Вега-Лайт для интерактивных графиков

Недавно я изучаю как Plotly express, так и Altair / Vega-Lite для интерактивного построения графиков. Оба они впечатляют, и мне интересно, в чем их сильные и слабые стороны. Есть ли между ними большие различия, особенно для создания интерактивных сюжетов, и когда один из них подходит больше, чем другой?


person roudan    schedule 21.01.2020    source источник


Ответы (1)


Пытаясь не вдаваться в личные предпочтения и слишком много деталей, вот некоторые из основных сходств и различий между ними, насколько мне известно.

Принципы дизайна

И Plotly express, и Altair являются декларативными библиотеками высокого уровня, что означает, что вы выражаете себя в терминах данных и отношений (например, в seaborn, holoviews и ggplot), а не в терминах механики построения более низкого уровня (например, в matplotlib и bokeh). Это требует меньшего набора текста и позволяет сосредоточиться на данных, но при этом у вас меньше контроля над точными деталями на графике.

Оба являются интерактивными пакетами построения графиков на основе базовых библиотек javascript. Plotly express располагается поверх plotly.py, который является оболочкой Python для plotly.js, тогда как Altair является оболочкой для VegaLite.js, который, в свою очередь, основан на Vega.js. И plotly.js, и Vega основаны на библиотеке визуализации D3, которая является стандартной библиотекой js viz.

Синтаксис

Одно из наиболее фундаментальных различий заключается в синтаксисе. Синтаксис Plotly больше ориентирован на наличие отдельных функций для каждого графика, а затем эти функции принимают несколько параметров для управления его поведением. Например, у функции скрипки есть параметр, указывающий, должен ли быть включен ленточный график. Альтаир фокусируется на графической грамматике, в которой вы составляете диаграммы из отдельных графических грамматических единиц так же, как вы составляете предложения из слов. Например, если бы я хотел объединить две диаграммы в Altair, я бы создал их по отдельности и сложил их вместе с помощью оператора слоя (это возможно в большей степени и в Plotly, но не всегда просто с Plotly express). Таким образом, синтаксические принципы Altairs очень похожи на ggplot, тогда как Plotly express больше (но не совсем) по своему синтаксису похож на seaborn.

Интерактивность

Оба очень функциональны и могут создавать многопанельные макеты графиков, которые связаны между собой посредством взаимодействий, таких как фильтрация или события наведения курсора, которые обновляют другие графики. На данный момент вся интерактивность в Altair осуществляется на стороне клиента (происходит в вашем браузере и все еще присутствует при экспорте записной книжки в HTML), тогда как Plotly имеет интерактивность как на стороне клиента, так и на стороне сервера (требуется работающий сервер Python). Таким образом, если вы используете Dash для панели управления Plotly, вы можете запустить пользовательскую функцию для выполнения, например, выделения на графике Plotly, тогда как в Altair вы можете обновлять только другие графики Altair с помощью этого выбора. Интерактивность на стороне сервера для Altair может быть реализована для пакета панели управления, оптимизированного в будущем.

Altair - единственный известный мне пакет визуализации, который имеет грамматику взаимодействия, которая позволяет вам составлять взаимодействия между виджетами и графиками в соответствии с теми же принципами, что и при создании графиков с помощью грамматики графики, что дает как согласованный опыт, так и позволяет для повышения креативности и гибкости при разработке взаимодействий. Plotly имеет интуитивно понятную поддержку анимации, и это может быть здорово, если ваши данные представляют собой временные ряды или что-то подобное.

Появление

Ознакомьтесь с Альтаиром и Plotly express, чтобы решить, какую эстетику вы предпочитаете. Многие из значений по умолчанию (цвет фона, размеры меток, номер оси и т. Д.), Конечно, можно изменить (индивидуально или с помощью тем), но вы все равно получите хорошее общее представление о том, как будут выглядеть ваши графики, проведя время в галереях.

Одно заметное отличие состоит в том, что Альтаир будет сохранять элементы графика и интервалы постоянными при изменении размера графика, например, более категориальные записи, тогда как Plotly изменит интервал и размер элементов на графике, чтобы они соответствовали общему размеру графика. Для фасетных подзаголовков Altair будет поддерживать каждый подзаголовок постоянного размера и увеличивать общий размер диаграммы по мере добавления большего количества, тогда как Plotly подгоняет подзаголовки к общему размеру сюжета и делает каждый сюжет меньше по мере добавления новых. Вы можете настроить обе библиотеки для создания графиков нужного вам размера, но именно так они ведут себя из коробки.

Дополнительно

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

person joelostblom    schedule 04.02.2021
comment
Большое спасибо, Джо, это здорово! Я ценю ваше подробное объяснение, оно очень полезно! - person roudan; 04.02.2021
comment
@roudan Добро пожаловать! Примите ответ с зеленой галочкой, если он вам помог, чтобы этот вопрос был отмечен как решенный. - person joelostblom; 05.02.2021
comment
спасибо за напоминание, я только что принял это. - person roudan; 05.02.2021