Как создать интерактивный график в Python: визуализация данных, Plotly и примеры

0
44

Распределения по одной переменной: Histograms и Boxplots

Построение графиков в - изображение номер один
Построение графиков в — изображение номер один

Одиночная переменная (single variable) — одномерный график — это стандартный способ начать анализ данных, а гистограмма — это график перехода (хотя он имеет некоторые проблемы) для построения графика распределения. Используя некоторую статистику (Скачать статистику >>>), давайте создадим интерактивную гистограмму количества likes для статей (это стандартный dataframe Pandas):
df

4 - изображение номер два
4 — изображение номер два

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

df[[‘time_started’, ‘time_published’]].iplot(kind=’hist’, histnorm=’percent’, barmode=’overlay’, xTitle=’Time of Day’, yTitle='(%) of Articles’, title=’Time Started and Time Published’)

Python - изображение номер три
Python — изображение номер три

С небольшим количеством манипуляций над мы можем сделать barplot:
pandas

# Resample to monthly frequency and plot df2 = df[[‘view’,’reads’,’published_date’]].\ set_index(‘published_date’).\ resample(‘M’).mean() (kind=’bar’, xTitle=’Date’, yTitle=’Average’, title=’Monthly Average Views and Reads’)

What is a - изображение номер четыре
What is a — изображение номер четыре

Мы можем объединить возможности Pandas с plotly + cufflinks. Для boxplot по подписчикам по всей истории публикаций мы используем а затем plot (точнее iplot):
pivot,

How to - изображение номер пять
How to — изображение номер пять

Преимущества интерактивности заключаются в том, что мы можем исследовать и размещать данные по своему усмотрению. В boxplot много информации, и без возможности видеть цифры мы пропустим большую ее часть!

Временные ряды (Time-Series)

Bar - изображение номер шесть
Bar — изображение номер шесть

# Create a dataframe of Towards Data Science Articles tds = df[df[‘publication’] == ‘Towards Data Science’].\ set_index(‘published_date’) # Plot read time as a time series tds[[‘claps’, ‘fans’, ‘title’]].iplot(y=’claps’, mode=’lines+markers’, secondary_y = ‘fans’, secondary_y_title=’Fans’, xTitle=’Date’, yTitle=’Claps’, text=’title’, title=’Fans and Claps over Time’)

Анализ временных рядов с помощью python / - изображение номер семь
Анализ временных рядов с помощью python / — изображение номер семь

  • Автоматическое получение красиво отформатированного временного ряда по оси X
  • Добавление вторичной оси Y, потому что наши переменные имеют разные диапазоны
  • Добавление заголовка статей в качестве всплывающей информации

Line - изображение номер восемь
Line — изображение номер восемь

Для диаграммы рассеяния с двумя переменными, окрашенной третьей категориальной переменной, мы используем:

ЧИТАТЬ ТАКЖЕ:  В Python проверка на целое число: isdigit, isnumeric, isdecimal и исключение

time series - изображение номер девять
time series — изображение номер девять

Давайте немного усложним, используя ось журнала — указанную в виде графического макета — (см. Документацию Plotly для деталей макета) и определяя размеры пузырьков с помощью числовой переменной:

(x=’word_count’, y=’reads’, size=’read_ratio’, text=text, mode=’markers’, # Log xaxis layout=dict(xaxis=dict(type=’log’, title=’Word Count’), yaxis=dict(title=’Reads’), title=’Reads vs Log Word Count Sized by Read Ratio’))

ARIMA - изображение номер десять
ARIMA — изображение номер десять

Time - изображение номер одиннадцать
Time — изображение номер одиннадцать

Как и прежде, мы можем комбинировать pandas с plotly+cufflinks для полезных графических представлений:

df.pivot_table(values=’views’, index=’published_date’, columns=’publication’).cumsum().iplot(mode=’markers+lines’, size=8, symbol=[1, 2, 3, 4, 5], layout=dict(xaxis=dict(title=’Date’), yaxis=dict(type=’log’, title=’Total Views’), title=’Total Views over Time by Publication’))

AI with - изображение номер двенадцать
AI with — изображение номер двенадцать

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

Диаграммы рассеяния — Scatterplots

Диаграмма рассеивания - изображение номер тринадцать
Диаграмма рассеивания — изображение номер тринадцать

Диаграмма рассеяния (Scatterplots) — используется очень часто для анализа данных. Scatterplots позволяет видеть эволюцию переменной во времени или связь между двумя (или более) переменными.

Advanced Plots — Расширенные графические представления

Встречайте: версия 4 - изображение номер четырнадцать
Встречайте: версия 4 — изображение номер четырнадцать

figure_factory figure_factory
Теперь мы разберемся с несколькими графиками, которые вы, вероятно, не будете использовать так часто, но которые могут быть весьма впечатляющими. Мы будем использовать график figure_factory, чтобы держать эти графики на одной линии.

Scatter Matrix

Scatter - изображение номер пятнадцать
Scatter — изображение номер пятнадцать

Когда мы хотим исследовать отношения между многими переменными, отличной опцией является точная матрица — scattermatrix (также называемая спломом или splom):

Create and - изображение номер шестнадцать
Create and — изображение номер шестнадцать

Даже этот график полностью интерактивен, что позволяет нам исследовать данные.

Тепловая карта корреляции — Correlation Heatmap

Easily - изображение номер семнадцать
Easily — изображение номер семнадцать

Чтобы визуализировать корреляции между числовыми переменными, мы вычисляем корреляции и затем создаем аннотированную тепловую карту:

Multidimensional data analysis in - изображение номер восемнадцать
Multidimensional data analysis in — изображение номер восемнадцать

Список графиков можно продолжать и продолжать. Cufflinks также имеют несколько тем, которые мы можем использовать, чтобы получить совершенно другой стиль без каких-либо усилий. Например, ниже у нас есть график отношения (ratio plot) в теме «space»:

Мы также можем получить 3D-графики (поверхность surface и пузырь bubble).

Редактирование в Plotly Chart Studio

Ниже приведены два графика, которые были скорректированы в Chart Studio:

Statistics - изображение номер девятнадцать
Statistics — изображение номер девятнадцать

Python plotly 1 - изображение номер двадцать
Python plotly 1 — изображение номер двадцать

Со всем, что упомянуто здесь, мы все еще не изучаем все возможности библиотеки! Я бы посоветовал вам проверить документацию по plotly & cufflinks, для более невероятной графики.

ЧИТАТЬ ТАКЖЕ:  Удаление папки со всем содержимым в Python: модули os, shutil и pathlib

Plotly - изображение номер двадцать один
Plotly — изображение номер двадцать один

ВыводыХуже всего в заблуждении о затонувших затратах является то, что вы понимаете, сколько времени вы потратили впустую после того, как бросили работу. К счастью, теперь, когда я допустил ошибку, придерживаясь matploblibслишком долго, вам не нужно!

Когда мы думаем о построении библиотек, есть несколько вещей, которые мы хотим:

  • Графики с одной переменной для быстрого исследования
  • Интерактивные элементы для подбора / исследования данных
  • Возможность копаться в деталях по мере необходимости
  • Простая настройка для финальной презентации

На данный момент, лучший вариант для всего этого в Python — это plotly.

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

Python plotly 3 scatter dot и экспорт интерактивного графика - изображение номер двадцать два
Python plotly 3 scatter dot и экспорт интерактивного графика — изображение номер двадцать два

Часто задаваемые вопросы о создании интерактивных графиков в Python

Вопрос: Какая библиотека Python лучше всего подходит для интерактивных графиков?
Ответ: Plotly — самая популярная библиотека для создания интерактивных графиков, она поддерживает zoom, pan и tooltips.

Вопрос: Можно ли сделать интерактивный график в Matplotlib?
Ответ: Да, с помощью виджета %matplotlib notebook в Jupyter или библиотеки mpld3.

Вопрос: Как сохранить интерактивный график в HTML?
Ответ: Используйте plotly.offline.plot(fig, filename=’file.html’) или fig.write_html(‘file.html’).

Вопрос: Что такое Plotly Express?
Ответ: Это высокоуровневый интерфейс Plotly, который позволяет создавать интерактивные графики одной строкой кода.

Вопрос: Как добавить анимацию в график Plotly?
Ответ: Используйте параметр animation_frame в Plotly Express или создайте кадры с помощью go.Frame.

Вопрос: Работают ли интерактивные графики в Google Colab?
Ответ: Да, Plotly полностью поддерживается в Google Colab, используйте plotly.io.renderers.default = ‘colab’.

Вопрос: Как изменить цветовую схему в интерактивном графике?
Ответ: Используйте параметр color_discrete_sequence в Plotly Express или update_traces(marker=dict(color=’…’)).

Вопрос: Можно ли объединить несколько интерактивных графиков?
Ответ: Да, с помощью make_subplots из plotly.subplots или через plotly.graph_objects.Figure с несколькими traces.

Вопрос: Как добавить кнопки управления (play/pause) для анимации?
Ответ: Используйте updatemenus с параметром type=’buttons’ и настройкой play/pause для кадров.

Вопрос: Как сделать график с возможностью выбора данных (brush selection)?
Ответ: Используйте plotly.graph_objects с параметром dragmode=’select’ или ‘lasso’.