Вступление
Plotly - это библиотека визуализации данных Python на основе JavaScript, ориентированная на интерактивную и веб- визуализацию. Он прост, как Seaborn, с высокоуровневым API, но также обладает интерактивностью Bokeh.
В дополнение к функциональным возможностям основной библиотеки использование встроенного Plotly Express с Dash делает его отличным выбором для веб-приложений и интерактивных панелей мониторинга, управляемых данными, обычно написанных на Flask .
В этом руководстве мы рассмотрим, как построить диаграмму рассеяния с помощью Plotly .
Точечные диаграммы исследуют взаимосвязь между двумя числовыми переменными (характеристиками) набора данных.
Импортировать данные
Мы будем работать с набором данных Heart Attack от Kaggle, который содержит данные о различных физических показателях, которые мы могли бы использовать в качестве индикаторов возможности сердечного приступа.
Давайте импортируем набор данных и напечатаем head()
чтобы взглянуть
на него:
import pandas as pd
df = pd.read_csv('heart.csv')
print(df.head())
Это приводит к:
age cp trtbps chol fbs restecg thalachh exng oldpeak slp caa output
0 63 3 145 233 1 0 150 0 2.3 0 0 1
1 37 2 130 250 0 1 187 0 3.5 0 0 1
2 41 1 130 204 0 0 172 0 1.4 2 0 1
3 56 1 120 236 0 1 178 0 0.8 2 0 1
4 57 0 120 354 0 1 163 1 0.6 2 0 1
Давайте исследовать отношения между такими функциями, как thalachh
(записано максимальным сердечным ритмом), trtbps
(покой кровяного
давления), chol
(количество холестерина) и output
( 0
или 1
,
представляющим более низкими или более высокими шансами испытывают
сердечный приступ , соответственно).
Во-первых, давайте продолжим и для краткости сохраним наши функции отдельно:
max_heartrate = df['thalachh']
resting_blood_pressure = df['trtbps']
cholesterol_level = df['chol']
output = df['output']
Постройте точечный график с помощью Plotly
Наконец, мы можем продолжить и построить диаграмму рассеяния . Давайте
продолжим и сначала исследуем взаимосвязь между max_heartrate
и
cholesterol_level
. Для того, чтобы построить график рассеяния с
Plotly, мы будем использовать scatter()
функцию Plotly Express ( px
) , например:
fig = px.scatter(x=cholesterol_level, y=max_heartrate)
fig.show()
Единственными обязательными аргументами являются функции x
и y
,
которые будут строить диаграмму рассеяния (без меток осей) на выделенном
сервере в выбранном вами браузере:
{.ezlazyload}
В качестве альтернативы, если вы не хотите заранее определять свои переменные, Plotly предлагает тот же синтаксис, что и Seaborn - вы указываете источник данных и имена функций, которые хотите визуализировать. Это сопоставит функции с надписями и нанесет их напрямую, без необходимости указывать функции, как мы делали раньше:
import pandas as pd
import plotly.express as px
df = pd.read_csv('heart.csv')
fig = px.scatter(df, x='chol', y='thalachh')
fig.show()
Это приводит к:
{.ezlazyload}
Примечание. Вы также можете DataFrame
эти подходы, указав свой
DataFrame в качестве источника, но также используя предварительно
определенные переменные вместо ссылки на имена столбцов функций в вызове
scatter()
fig = px.scatter(df, x=cholesterol_level, y=max_heartrate)
fig.show()
Это также приводит к помеченному графику рассеяния:
{.ezlazyload}
Кажется, что нет большой корреляции между уровнем холестерина и максимальной частотой сердечных сокращений людей в этом наборе данных.
Настройка графика рассеяния
Сейчас мы редко визуализируем простые графики . Дело в том, чтобы интуитивно визуализировать определенные характеристики данных.
В нашем случае это может включать раскрашивание маркеров в зависимости
от функции output
или добавление hover_data
, которое указывает, что
отображается на маркерах, когда кто-то наводит на них курсор.
В настоящее время hover_data
не очень полезен, показывая нам только
значения x
и y
, которые уже можно разумно вывести, наблюдая за
полученным графиком.
Давайте продолжим и изменим несколько параметров, чтобы сделать этот график более интуитивным:
import pandas as pd
import plotly.express as px
df = pd.read_csv('heart.csv')
fig = px.scatter(df, x='chol', y='thalachh', color='output', hover_data=['sex', 'age'])
fig.show()
Мы установили color
каждого маркера, который будет сопоставлен с
output
, окрашивая в разные цвета все более и менее вероятности
сердечного приступа. Мы также включили sex
и age
каждого человека в
их маркеры.
Это приводит к:
{.ezlazyload}
Наконец, вы также можете изменить размер маркера, либо передав ему
скалярное значение (например, 5
) в метод fig.update_traces()
, либо
передав векторное значение (например, сопоставив размер с функцией) в
аргумент size
Давайте сопоставим oldpeak
с размером каждого маркера:
import pandas as pd
import plotly.express as px
df = pd.read_csv('heart.csv')
fig = px.scatter(df, x='chol',
y='thalachh',
color='output',
size='oldpeak',
hover_data=['sex', 'age'])
fig.show()
Теперь каждый маркер будет иметь переменный размер в зависимости от
значений функции oldpeak
:
{.ezlazyload}
Или, если вы хотите специально сделать все маркеры одинакового
фиксированного размера, вы можете обновить следы Figure
import pandas as pd
import plotly.express as px
df = pd.read_csv('heart.csv')
fig = px.scatter(df, x='chol',
y='thalachh',
color='output',
hover_data=['sex', 'age'])
fig.update_traces(marker={'size': 10})
fig.show()
Это приводит к:
{.ezlazyload}
Заключение
В этом руководстве мы рассмотрели, как построить диаграмму рассеяния с помощью Python и Plotly.
Если вас интересует визуализация данных и вы не знаете, с чего начать, обязательно ознакомьтесь с нашим комплектом книг по визуализации данных в Python{.ebook-link} :
::: {style=“border: 1px solid #ebebeb;padding: 15px;”} {.ebook-link}
Визуализация данных в Python
::: {.row} ::: {.col-md-4 .col-xs-12} {.ezlazyload .img-responsive .center-block} :::
::: {.col-md-8 .col-xs-12 .my-auto} Станьте опасными с визуализацией данных
✅ 30-дневная гарантия возврата денег без вопросов
✅ от начального до продвинутого
✅ Регулярно обновляется бесплатно (последнее обновление в апреле 2021 г.)
✅ Обновлено с бонусными ресурсами и руководствами ::: ::: :::
Визуализация данных в Python с помощью Matplotlib и Pandas - это книга, предназначенная для абсолютных новичков в работе с Pandas и Matplotlib с базовыми знаниями Python и позволяющая им создать прочную основу для расширенной работы с этими библиотеками - от простых графиков до анимированных трехмерных графиков с интерактивными кнопки.
Он служит подробным руководством, которое научит вас всему, что вам нужно знать о Pandas и Matplotlib, в том числе о том, как создавать типы графиков, которые не встроены в саму библиотеку.
Книга «Визуализация данных в Python» , книга для начинающих и средних разработчиков Python, проведет вас через простые манипуляции с данными с помощью Pandas, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair. В частности, на протяжении 11 глав эта книга охватывает 9 библиотек Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas и VisPy.
Он служит уникальным практическим руководством по визуализации данных в виде множества инструментов, которые вы можете использовать в своей карьере.