График разброса - Учебное пособие с примерами

Введение Plotly - это основанная на JavaScript библиотека визуализации данных Python, ориентированная на интерактивную и веб-визуализацию. Он прост, как Seaborn, с высокоуровневым API, но также обладает интерактивностью Bokeh. В дополнение к функциональным возможностям основной библиотеки использование встроенного Plotly Express с Dash делает его отличным выбором для веб-приложений и интерактивных панелей мониторинга, управляемых данными, обычно написанных на Flask. В этом руководстве мы рассмотрим, как построить Sca

Вступление

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.

Он служит уникальным практическим руководством по визуализации данных в виде множества инструментов, которые вы можете использовать в своей карьере.

comments powered by Disqus