Создаем интерактивные чарты с Plotly
На дворе 2020. Неужели мы не заслужили чего-то лучшего, чем Matplotlib для построения визуализаций? Конечно же, да! Тогда знакомьтесь - Plotly! Потрясающая и супер гибкая библиотека для создания красивых дата-визуализаций.
Есть два основных преимущества использования Plotly по сравнению с другими библиотеками Python, способными создавать графики, такими как Matplotlib и Seaborn. Это:
- Простота использования - создание интерактивных графиков, 3D-графиков и другой сложной графики уместится всего в несколько строк кода. Сделать то же самое в других библиотеках потребует гораздо больше работы.
- Больше возможностей - поскольку Plotly построен на основе D3.js, его возможности построения графиков намного больше, чем у аналогов. Финансовые, статистические, научные чарты, свечные диаграммы, гео-карты. На момент написания поста около 40 типов графиков доступно в Plotly. Смотрите полный список здесь.
Установить Plotly можно с помощью pip:
pip install plotly==4.14.1
или через пакетный менеджер conda:
conda install -c plotly plotly=4.14.1
Далее мы потренируемся создать визуализации на основе датасета о ценах на жилье, который вы можете скачать из Kaggle.
Импорт данных
Для начала импортируем plotly и его внутренний компонент графических объектов.А также pandas для загрузки наших данных в датафрейм.
Скаттер плот
Построим график зависимости года продажи объекта(Sales Price) от года постройки (YearBuilt). Для этого мы создадим Scatter graph object и поместим его в trace.По сути задание характеристик для чарта выполняется в виде создания объекта с парой ключ-значение.
Приведенная выше команда откроет в вашем браузере новую вкладку с чартом.
Если хотите, чтобы графики открывали прямо в ноутбуке, то для начала установите пакет ipywidgets.
Через pip:
pip install "ipywidgets>=7.2"
Через conda:
conda install "ipywidgets>=7.2"
А сам код будет выглядеть следующим образом:
import plotly.graph_objects as go
fig = go.Figure(data=go.Bar(y=[2, 3, 1]))
fig.show()
- При наведении на каждую точку отображаются ее значения в осях x и y.
- График можно зумить
- Можно выделять часть графика с помощью прямоугольника или лассо.
- Вы можете передвигаться по чарту, чтобы лучше рассмотреть его участки детально
- Вы можете скачать чарт в виде изображения
Рисуем бокс-плот
Процесс примерно такой же. Мы создадим graph object, поместим его в trace, поменяем только тип графика:При выборе боксплота теперь можно получить дополнительную информацию по характеру распределения величин:
- Медиана
- 1 и 3 квартили
- Минимум и Максимум значений
- Верхний и нижний предел, увидеть если есть выбросы в данных
Тепловая карта (хитмэп)
Тепловые карты - еще один мощный инструмент визуального анализа данных. Они особенно эффективны для отображения корреляций между несколькими переменными на одном графике.
Давайте построим корреляционную матрицу нашего набора данных о ценах на жилье в виде тепловой карты. Сначала определяем x и y как имена столбцов, а z как значения в матрице.
Давайте построим корреляционную матрицу нашего набора данных о ценах на жилье в виде тепловой карты. Сначала определяем x и y как имена столбцов, а z как значения в матрице.
После выполнения команды получим вот такой чарт:
Те же хитмэпы в Matplotlib могут быть сложноваты для восприятия, поскольку вы не можете увидеть точное значение в каждой ячейке. Вы можете только предугадать по цвету. Да, можно написать дополнительно код, чтобы вывести эту информацию, но писать код для Matplotlib - это то еще удовольствие.
Plotly же дает нам интерактивность прямо из коробки, поэтому, когда мы строим тепловую карту, мы получаем не только интуитивно понятный обзор, но также возможность при необходимости проверять точные значения. А возможность фокусироваться на отдельной части большого графика позволяет легко погрузиться в детали все это безупречно с визуальной точки зрения!
Сегодня мы познакомились только с базовыми возможностями этой библиотеки. В следующих постах я планирую рассказать чуть больше про структуру основных объектов библиотеки и способах задания параметров для ваших чартов.
Комментарии
Отправить комментарий