Блог

Веб-интерфейс на Python с библиотекой Dash (by Plotly): промышленное решение или симпатичный прототип?

В конце июня 2017 создатели библиотеки визуализации Plotly выпустили новую Python-библиотеку для создания веб-приложений — Dash (https://plot.ly/products/dash/).

При помощи Dash можно быстро создать интерактивный многостраничный многопользовательский интерфейс полностью в Python, наполнить его красивыми визуализациями Plotly и, используя свои CSS-стили, сделать кастомный дизайн. Так как весь процесс создания происходит в Python, то веб-приложение можно с легкостью связать со всеми самыми продвинутыми библиотеками машинного обучения, нейронными сетями и анализом данных. Такой подход значительно ускоряет время создания веб-приложений без ущерба для дизайна — созданные аналитические интерфейсы и интерактивные отчеты выглядят как готовые промышленные решения.

Built on top of Plotly.js, React, and Flask, Dash ties modern UI elements like dropdowns, sliders, and graphs to your analytical Python code

Источник: https://plot.ly/products/dash/

Для доступа к значениям компонент веб-приложения используется гибкий подход Flask-а: значениям веб-компонент присваиваются id и они же используются при определении входов и выходов внутренних функций приложения.

Источник: https://plot.ly/products/dash/

Несмотря на новизну библиотеки, уже сейчас в ней присутствует достаточно широкий базовый набор веб-компонент. Также существует возможность создать свои собственные компоненты, правда, для этого уже понадобится владение Javascript, React и прочими веб-технологиями. Также в библиотеке есть некоторые сложности по осуществлению сложной логики вызова связанных веб-компонент, вроде A -> B -> A -> C. Однако стоит отметить, что фреймворк активно разрабатывается и заметен значительный прирост доступной функциональности, например недавно появились интерактивные таблицы с возможностью редактирования прямо в интерфейсе.

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