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

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

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

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

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

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

Забудьте о matplotlib: визуализация данных в Python вместе с 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

proglib.io

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

Ваш e-mail не будет опубликован.

19 + десять =