Возможности функции scatterplot() библиотеки seaborn

в 8:15, , рубрики: scatterplot, seaborn

Графики отношений (relational plots) относятся к типу графиков, которые показывают взаимосвязи между двумя или более переменными. Эти графики позволяют находить зависимости и закономерности в данных.

В библиотеке seaborn существует два основных типа графиков отношений:

  • Диаграмма рассеяния (scatter plot). Диаграмма рассеяния показывает взаимосвязь двух переменных в виде точек на графике. В библиотеке seaborn диаграммы рассеяния строятся функцией scatterplot().

  • Линейный график (line plot). Линейный график представляет собой линию, последовательно соединяющую точки данных. Он особенно эффективен для демонстрации изменений переменной во времени. В библиотеке seaborn линейные графики строятся функцией lineplot().

Также в библиотеке seaborn имеется универсальная функция relplot(), которая позволяет создавать как диаграммы рассеяния, так и линейные графики.

Функция scatterplot()

Как уже было сказано выше, в библиотеке seaborn за создание диаграмм рассеяния отвечает функция scatterplot(). Приведём основные параметры этой функции:

  • data: DataFrame или массив с данными;

  • x: название столбца или вектор данных для оси X;

  • y: название столбца или вектор данных для оси Y;

  • hue: название столбца или вектор данных для группировки точек по цвету;

  • size: название столбца или вектор данных для изменения размера точек;

  • style: название столбца или вектор данных для изменения стиля точек (например, разные формы);

  • palette: цветовая палитра для переменной hue;

  • hue_order: задаёт порядок отображения категорий для переменной hue;

  • hue_norm: позволяет нормализовать данные переменной hue;

  • sizes: диапазон размеров для переменной size;

  • size_order: задаёт порядок отображения категорий для переменной size;

  • size_norm: позволяет нормализовать данные переменной size, задавая диапазон значений;

  • markers: список стилей маркеров для переменной style;

  • style_order: задаёт порядок отображения категорий для переменной style.

В этой статье, для демонстрации примеров, мы будем использовать один из встроенных в библиотеку seaborn датасетов, а именно - датасет 'penguins', содержащий информацию о трёх видах пингвинов, обитающих на островах: Biscoe, Dream, Torgersen.

Загрузим этот датасет и посмотрим на данные, содержащиеся в нём:

import pandas as pd
import seaborn as sns

penguins = sns.load_dataset('penguins').dropna()
penguins.head()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 1
penguins.info()

Результат:

<class 'pandas.core.frame.DataFrame'>
Index: 333 entries, 0 to 343
Data columns (total 7 columns):
 #   Column             Non-Null Count  Dtype  
---  ------             --------------  -----  
 0   species            333 non-null    object 
 1   island             333 non-null    object 
 2   bill_length_mm     333 non-null    float64
 3   bill_depth_mm      333 non-null    float64
 4   flipper_length_mm  333 non-null    float64
 5   body_mass_g        333 non-null    float64
 6   sex                333 non-null    object 
dtypes: float64(4), object(3)
memory usage: 20.8+ KB

Датасет penguins содержит следующие столбцы:

  • 'species' - вид пингвина (Adelie, Chinstrap, Gentoo);

  • 'island' - остров, где были собраны данные (Biscoe, Dream, Torgersen);

  • 'bill_length_mm' - длина клюва в миллиметрах;

  • 'bill_depth_mm' - глубина клюва в миллиметрах;

  • 'flipper_length_mm' - длина ласт в миллиметрах;

  • 'body_mass_g' - масса тела в граммах;

  • 'sex' - пол пингвина (Male, Female).

Построим диаграмму рассеяния, на которой по оси X будут отображены значения длины клюва, а по оси Y - значения глубины клюва:

import matplotlib.pyplot as plt

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm')
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 2

​​На данный момент на графике нет сетки координат. Отображение координатной сетки зависит от выбранного стиля. Стиль отображения можно изменять функцией set_style(). Белый стиль без отображения координатной сетки называется 'white'. Чтобы на графике отображались линии сетки координат, надо функции set_style() передать атрибут 'whitegrid':

sns.set_style('whitegrid')
sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm')
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 3

​​В библиотеке seaborn можно также использовать "тёмную" тему с линиями сетки координат, которая называется 'darkgrid':

sns.set_style('darkgrid')
sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm')
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 4

Помимо выбора стилей, пользователи могут изменять цвет, размер и форму точек на графике. Далее давайте рассмотрим эти возможности.

параметр color функции scatterplot()

Цвет точек меняется параметром color, которому передаётся наименование выбранного цвета или его HEX-код (хекс-код). Например, сделаем точки на графике зелёного цвета:

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm',
                color='green')
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 5

параметр alpha функции scatterplot()

Параметр alpha управляет прозрачностью точек на графике рассеяния. Этот параметр принимает значение от 0 до 1, где 0 означает полностью прозрачные точки, а 1 - полностью непрозрачные. Настройка прозрачности точек может быть полезна для улучшения читаемости графика, особенно когда точки перекрываются.

Для примера сделаем точки полупрозрачными:

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm',
                color='green',
                alpha=0.5)
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 6

параметр s функции scatterplot()

Параметр s функции scatterplot() управляет размером точек на графике рассеяния. Этот параметр принимает числовое значение.

Увеличим размер точек на графике:

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm',
                color='green',
                alpha=0.5,
                s=100)
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 7

параметр marker функции scatterplot()

Параметр marker в функции scatterplot() определяет форму маркеров (точек) на графике рассеяния.

Вот некоторые из доступных кодов маркеров:

  • 'o': круг;

  • 's': квадрат;

  • '^': треугольник вверх;

  • 'v': треугольник вниз;

  • '>': треугольник вправо;

  • '<': треугольник влево;

  • 'x': крестик;

  • '*': звёздочка;

  • 'D': ромб;

  • 'H': шестиугольник.

Например, поменяем кружочки на квадратики:

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm',
                color='green',
                alpha=0.5,
                s=100,
                marker='s')
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 8

параметр hue функции scatterplot()

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

Параметру hue передаётся имя той переменной, по которой мы хотим произвести разделение точек на группы. Например, разделим пингвинов по принадлежности к тому или иному острову:

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm',
                hue='island')
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 9

Или разделим на группы по видам пингвинов:

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm',
                hue='species')
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 10

Посмотрев на эти два графика, можно прийти к некоторому умозаключению, что пингвины вида Adelie обитают на всех трёх островах, в отличие от представителей двух других видов.

Параметру hue можно передавать не только категориальную переменную, но и количественную. Например, посмотрим на распределение данных с группировкой по массе тела пингвинов:

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm',
                hue='body_mass_g')
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 11

В этом случае мы наблюдаем, как пингвины с различной массой тела распределились по разным группам, и каждая из них получила свой уникальный цветовой оттенок.

Из этого рисунка можно заключить, что пингвины, расположенные в правой нижней четверти графика, обладают более значительной массой тела по сравнению с остальными.

параметр hue_norm функции scatterplot()

Параметр hue_norm используется для нормализации цветовой шкалы при отображении данных с помощью параметра hue. Параметру передаётся кортеж с минимальным и максимальным значениями, в пределах которых цветовая палитра будет меняться от самого светлого тона до самого тёмного. Это может пригодиться в случаях, когда вы хотите акцентировать внимание на определенном диапазоне значений.

Например, сделаем так, чтобы оттенки менялись только у точек, соответствующих массе пингвинов от 2700 до 4000:

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm',
                hue='body_mass_g',
                hue_norm=(2700, 4000))
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 12

В этом примере точки, соответствующие массе пингвинов свыше 4000 грамм, окрашены в максимально тёмный цвет для этой палитры. 

параметр hue_order функции scatterplot()

Параметр hue_order используется для определения порядка категорий, которые будут отображаться в графике рассеяния при использовании параметра hue. Он принимает список значений, которые определяют порядок отображения категорий, что позволяет контролировать, какие цвета будут назначены конкретным категориям.

Для примера изменим порядок отображения видов пингвинов:

sns.scatterplot(data=penguins, x='bill_length_mm', y='bill_depth_mm',
                hue='species',
                hue_order=['Gentoo', 'Chinstrap', 'Adelie'])
plt.show()

Результат:

Возможности функции scatterplot() библиотеки seaborn - 13

О других возможностях функции scatterplot() и о работе с функцией lineplot() библиотеки seaborn, вы можете узнать из бесплатной части моего курса на платформе Stepik: https://stepik.org/204124

Автор: sevsp

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js