Динамика В Действии: Интерактивные Графики В Dash

Dash — это платформа для визуализации данных и создания веб-приложений, интуитивно понятная и довольно простая в использовании.

Может быть интересен тем, кто хочет использовать интерактивные графики для анализа данных с помощью Python. Давайте посмотрим на построение таких диаграмм с использованием обратных вызовов в Dash.

Динамика в действии: интерактивные графики в Dash

Фреймворк Dash позволяет создавать веб-приложения с визуализацией различной информации, в частности графиков.

Несомненно, такая особенность фреймворка очень полезна для дата-сайентиста.

Dash в основном использует Plotly.js (диаграммы), Flask (веб-сервер) и React (веб-интерфейс).

Вам не нужно разбираться в этих технологиях, чтобы успешно использовать Dash в своей работе, достаточно иметь базовые знания Python и представление о том, какие графики вы хотите видеть на своем дашборде.

Интерактивность графических элементов — это способность таких элементов реагировать на действия пользователя (изменяться и переставляться в зависимости от выбранных параметров).

В Dash такой ответ возможен посредством обратных вызовов.

Такие графики являются динамичными и могут эффективно и наглядно отображать самую разнообразную информацию об изучаемых данных.

Рекомендую прочитать больше о Dash и его функционале в документация .

Приведу пример создания простого веб-приложения с использованием интерактивных графических элементов фреймворка Dash. Всю предварительную обработку данных я проведу в Jupyter Notebook, а код для дашборда напишу в Visual Studio Code. Для работы будем использовать датасет с конкурса болтать : Продажи видеоигр с рейтингами.

Предоставляет информацию о продажах видеоигр с их рейтингами и оценками.

Поставим перед собой следующую задачу: предположим, мы хотим вывести на дашборд график зависимости рейтингов игр от их жанров и гистограмму рейтингов игр по годам, начиная с 2000 года.

Наши интерактивные графики должны реагировать на изменение фильтров по жанрам, рейтинги и год. Для проверки мы также будем отображать интерактивный текст — результат фильтрации (сколько игр соответствует выбранным фильтрам).

Проведем предварительную обработку данных - оставим только интересующие нас параметры, удалим записи с пробелами и т.д. Код выложен в репозитории по адресу github Исходные данные

Динамика в действии: интерактивные графики в Dash

Итак, начало кода стандартное для работы с Dash: импортируйте необходимые модули, загрузите обработанные данные и инициализируйте Dash.

Динамика в действии: интерактивные графики в Dash

Создадим переменные со всеми жанрами и рейтингами для дальнейшего создания фильтров.



Динамика в действии: интерактивные графики в Dash

Давайте начнем определять внешний вид нашего приложения.

Для этого мы будем использовать атрибут макета нашего класса Dash. Прописываем в нем древовидную структуру элементов Html — родительский html.Div и дочерние элементы заголовка (html.H1) и абзаца (html.P).

Также зададим элементарный стиль — цвет и положение фона, на котором будет отображаться указанный текст. Далее мы увидим, что удобно задавать общий стиль элементам, обернув их в один html.Div.

Динамика в действии: интерактивные графики в Dash

Давайте посмотрим, что у нас получилось.

Чтобы веб-приложение открылось, нужно в коде вызвать его для запуска.



Динамика в действии: интерактивные графики в Dash

Запустим само приложение.

Результат:

Динамика в действии: интерактивные графики в Dash

Теперь давайте добавим в макет фильтры с множественным выбором и шаблон для интерактивного текста.

В стиле указываем желаемое положение элементов на веб-странице и цвет фона.



Динамика в действии: интерактивные графики в Dash

Обратите внимание, что html.Label — это метка элемента интерфейса, а dcc.Dropdown — раскрывающийся список.

При запуске мы видим фильтры по жанрам и рейтингам; интерактивный текст будет отображен позже

Динамика в действии: интерактивные графики в Dash

Наконец, добавим шаблон для графиков и фильтр по годам (в виде слайдера).

Определим график зависимости рейтингов игр от их жанров в виде диаграммы рассеяния.



Динамика в действии: интерактивные графики в Dash

Результат — фильтр по годам и шаблон для графиков.



Динамика в действии: интерактивные графики в Dash

Пришло время добавить немного динамики на вашу панель управления.

Начнем с создания декоратора (app.callback) для результата фильтрации.



Динамика в действии: интерактивные графики в Dash

По мере изменения входных данных (значений фильтра) выходные данные (текстовая область) также будут меняться.

Результат количественной фильтрации будет сохранен в переменной games_count, которую вернет Output. Фильтры по умолчанию, результат фильтрации – 712 игр.



Динамика в действии: интерактивные графики в Dash

Добавим жанр Разное, результат фильтрации изменит значение на 895.

Динамика в действии: интерактивные графики в Dash

Теперь немного посложнее, создадим декоратор для гистограммы рейтингов игр по годам.



Динамика в действии: интерактивные графики в Dash

Теперь вывод вернет график, созданный в функции update_stacked_area (переменная рисунка).

Фильтры по умолчанию

Динамика в действии: интерактивные графики в Dash

Добавим жанры и рейтинги, установим год выпуска - до 2003. График автоматически перестраивается

Динамика в действии: интерактивные графики в Dash

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

По оси X будет стоять рейтинг пользователей, по оси Y — рейтинг критиков.



Динамика в действии: интерактивные графики в Dash

Давайте посмотрим на конечный результат интерактивной панели.

Фильтры по умолчанию

Динамика в действии: интерактивные графики в Dash

Добавим жанры и рейтинги, установим год выпуска - до 2014. Интерактивный текст и графика будут меняться в соответствии с заданными фильтрами.



Динамика в действии: интерактивные графики в Dash

Полный код размещен в репозитории по адресу github .

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

Попробуйте создать свои собственные интерактивные диаграммы в Dash! Теги: #python #программирование #данные #Визуализация данных #визуализация #график #dash

Вместе с данным постом часто просматривают: