Забудьте о matplotlib: визуализация данных в Python вместе с plotly

0
14293
Добавить в избранное

Красочное интерактивное отображение датасета в одну строку? Не проблема с plotly! Разбираемся с построением интерактивных графиков и диаграмм.

Забудьте о matplotlib: визуализация данных в Python вместе с plotly

Если спросить питонистов, какую библиотеку использовать для визуализации данных, то большинство, несомненно, ответят: matplotlib. Ответят, правда, без особого удовольствия. Многое в matplotlib не так уж очевидно и требует не раз обратиться к StackOverflow. Касается это и таких распространенных ситуаций, как создание дополнительных осей или отображение на них дат.

Нужно понимать, что matplotlib создавался задолго до бурного развития Data Science, и в большей мере ориентировался на отображение массивов NumPy и параметрических функций SciPy. В то же время в Data Science распространен обобщающий тип объектов – датасеты, крупные таблицы с данными. В этой статье мы нырнем в работу с альтернативной библиотекой – plotly – и научимся визуализировать множество самых необходимых вещей.

Весь код доступен на GitHub. Интерактивные графики можно (и нужно) смотреть на NBViewer. Приводимые куски кода будут отображать только минимальную часть, необходимую для визуализации данных. Предподготовка данных – в указанных источниках.

Забудьте о matplotlib: визуализация данных в Python вместе с plotly

Краткий обзор plotly

Пакет plotly – библиотека с открытым исходным кодом, построенная на plotly.js, которая, в свою очередь, базируется на d3.js. В своих экспериментах с кодом будем использовать обертку над plotly cufflinks. Она упрощает работу с датафреймами pandas. Plotly – это графическая компания, производящая несколько продуктов и инструментов с открытым исходным кодом. Библиотека бесплатна для использования и позволяет создавать неограниченное количество графиков в автономном режиме, а также до 25 диаграмм онлайн.

Вся работа статье была сделана в блокноте Jupyter в связке plotly+cufflinks, которые можно установить стандартным образом с помощью pip:

Соответствующий импорт Python библиотек:

Перейдем к примерам.

Распределение единственной переменной: гистограммы и боксплоты

Построение распределения переменной – стандартный способ начального анализа данных. При помощи plotly легко сделать интерактивное представление гистограмм и прочих распределений. Для тех, кто использовал ранее matplotlib, нужно вместо команды plot просто использовать iplot:

Интерактивная гистограмма в plotly

Если мы хотим сравнить распределение двух переменных, можем наложить две гистограммы друг на друга:

Перектрытие гистограмм в plotly

Проведя некоторые манипуляции в pandas, получаем диаграмму с распределением относительно времени:

Комбинируя мощь pandas и plotly, легко получать интерактивные сводные диаграммы:

Cводная диаграмма в plotly

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

Временные ряды

Одна из распространенных задач – отображение данных относительно временной шкалы. Здесь актуальна возможность выбора интересующего интервала для отслеживания тренда.

В одной строке были сделаны сразу несколько вещей:

  • Задание формата оси абсцисс.
  • Создание дополнительной оси ординат, так как исследуемые данные имеют разный масштаб величин (secondary_y = ‘fans’).
  • Добавление заголовков статей к каждой точке, отображаемых при наведении курсора (рассматривается датафрейм публикации статей (text=’title’)).

Чтобы создать к каждой точке текстовые аннотации, используем режим lines+markers+text:

Легко сочетать и различные типы отображения. Например, использовать цвет для дополнительной переменной.

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

Совместим данные двух переменных (для рассматриваемого датасета это время чтения и процент прочитанного). Для третьего параметра (тематика статьи) используем цвет:

Если величина меняется в широком диапазоне логично использовать логарифмические оси. В примере ниже представлен код с логарифмической осью абсцисс (команда type=’log’). Третья переменная показывается при помощи размера маркеров (size=’read_ratio’).

Описанные стратегии отображения дополнительной переменной можно использовать для одновременной визуализации четырех переменных: двух – при помощи координат, и еще двух – за счет использования цвета и размера. Результат представлен на рисунке ниже.

Другие формы представления

Для следующих форм представления данных будем использовать модуль plotly.figure_factory.

Матрица диаграмм рассеяния

Показать взаимосвязь между параметрами поможет матрица диаграмм рассеяния. В качестве диагонального отображения единственной переменной используем гистограммы (diag=’histogram’). Заметим, что и здесь мы можем использовать цвет в качестве дополнительной переменной.

Цветовая карта распределения

Другой способ, удобный для большого количества переменных – цветовая карта распределения величины. Такой подход удобен, например, для корреляционной матрицы параметров датасета df.corr():

Приятной особенностью cufflinks является возможность выбора стиля отображения данных с помощью различных тем. Ниже представлены отображения в темах space и ggplot:

Есть возможность визуализации в трехмерном пространстве:

Есть и все, что привычно видеть в стандартном наборе построения диаграмм. Но даже круговые диаграммы выглядят здесь более стильно, чем в matplotlib:

Chart Studio

Если вы запускали скрипты в Jupyter-блокноте, вы могли заметить небольшую ссылку в правой части графика Export to plot.ly. Нажав на нее, вы перенесетесь в Chart Studio, где можно дополнительно подготовить диаграмму для конечной презентации. Вы можете добавить аннотацию, изменить цвета и пр. Ниже представлены две диаграммы, подготовленные в Chart Studio.

Даже все вышепредставленное не описывает всех возможностей описываемых библиотек. Чтобы увидеть больше красочных примеров, изучите документации plotly и cufflinks.

Заключение

Итак, что мы имеем:

  • Однострочный код для красочной визуализации датасетов.
  • Интерактивные элементы для выделения и исследования данных.
  • Возможность существенной детализации отображаемой информации.
  • Простая настройка отображения для презентации с использованием преднастроенных шаблонов.

Таким образом, plotly в связке с cufflinks позволяет с минимальными усилиями быстро создавать интерактивное отображение датасетов.

Источник (англ. язык)

Вас также могут заинтересовать:

Интересуетесь Data Science?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




Добавить комментарий