Содержание
Распределения по одной переменной: Histograms и Boxplots
Одиночная переменная (single variable) — одномерный график — это стандартный способ начать анализ данных, а гистограмма — это график перехода (хотя он имеет некоторые проблемы) для построения графика распределения. Используя некоторую статистику (Скачать статистику >>>), давайте создадим интерактивную гистограмму количества likes для статей (это стандартный dataframe Pandas):
df
Для тех, кто привык к, все, что нам нужно сделать, это добавить еще одну букву (вместо), и мы получим намного более привлекательный и интерактивный график! Мы можем щелкнуть на колонке, чтобы получить более подробную информацию, увеличить масштаб участков и, как мы увидим позже, выбрать различные категории для выделения.
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’)
С небольшим количеством манипуляций над мы можем сделать 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’)
Мы можем объединить возможности Pandas с plotly + cufflinks. Для boxplot по подписчикам по всей истории публикаций мы используем а затем plot (точнее iplot):
pivot,
Преимущества интерактивности заключаются в том, что мы можем исследовать и размещать данные по своему усмотрению. В boxplot много информации, и без возможности видеть цифры мы пропустим большую ее часть!
Временные ряды (Time-Series)
# 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’)
- Автоматическое получение красиво отформатированного временного ряда по оси X
- Добавление вторичной оси Y, потому что наши переменные имеют разные диапазоны
- Добавление заголовка статей в качестве всплывающей информации
Для диаграммы рассеяния с двумя переменными, окрашенной третьей категориальной переменной, мы используем:
Давайте немного усложним, используя ось журнала — указанную в виде графического макета — (см. Документацию 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’))
Как и прежде, мы можем комбинировать 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’))
См. Блокнот или документацию для получения дополнительных примеров дополнительных функций. Мы можем добавлять текстовые аннотации, опорные линии и линии, которые лучше всего подходят для наших графиков, с помощью одной строки кода и при этом со всеми взаимодействиями.
Диаграммы рассеяния — Scatterplots
Диаграмма рассеяния (Scatterplots) — используется очень часто для анализа данных. Scatterplots позволяет видеть эволюцию переменной во времени или связь между двумя (или более) переменными.
Advanced Plots — Расширенные графические представления
figure_factory figure_factory
Теперь мы разберемся с несколькими графиками, которые вы, вероятно, не будете использовать так часто, но которые могут быть весьма впечатляющими. Мы будем использовать график figure_factory, чтобы держать эти графики на одной линии.
Scatter Matrix
Когда мы хотим исследовать отношения между многими переменными, отличной опцией является точная матрица — scattermatrix (также называемая спломом или splom):
Даже этот график полностью интерактивен, что позволяет нам исследовать данные.
Тепловая карта корреляции — Correlation Heatmap
Чтобы визуализировать корреляции между числовыми переменными, мы вычисляем корреляции и затем создаем аннотированную тепловую карту:
Список графиков можно продолжать и продолжать. Cufflinks также имеют несколько тем, которые мы можем использовать, чтобы получить совершенно другой стиль без каких-либо усилий. Например, ниже у нас есть график отношения (ratio plot) в теме «space»:
Мы также можем получить 3D-графики (поверхность surface и пузырь bubble).
Редактирование в Plotly Chart Studio
Ниже приведены два графика, которые были скорректированы в Chart Studio:
Со всем, что упомянуто здесь, мы все еще не изучаем все возможности библиотеки! Я бы посоветовал вам проверить документацию по plotly & cufflinks, для более невероятной графики.
ВыводыХуже всего в заблуждении о затонувших затратах является то, что вы понимаете, сколько времени вы потратили впустую после того, как бросили работу. К счастью, теперь, когда я допустил ошибку, придерживаясь matploblibслишком долго, вам не нужно!
Когда мы думаем о построении библиотек, есть несколько вещей, которые мы хотим:
- Графики с одной переменной для быстрого исследования
- Интерактивные элементы для подбора / исследования данных
- Возможность копаться в деталях по мере необходимости
- Простая настройка для финальной презентации
На данный момент, лучший вариант для всего этого в Python — это plotly.
Plotly позволяет нам быстро создавать визуализации и помогает нам лучше понять наши данные с помощью интерактивности. Кроме того, давайте признаем, что построение графиков должно быть одной из самых приятных частей науки о данных! С другими библиотеками построение графиков превратилось в утомительное занятие, но с plotly снова есть радость в создании великой фигуры!
Часто задаваемые вопросы о создании интерактивных графиков в 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’.






















