Seaborn relplot – Создание точечных и линейных графиков

В этом учебнике вы узнаете, как создавать реляционные графики Seaborn с использованием функции sns.relplot(). Реляционные графики показывают связь между двумя или более переменными. Например, вы можете использовать Seaborn для создания линейных графиков, чтобы показать связь между непрерывными переменными. Аналогично, вы можете захотеть создать диаграммы рассеяния.

Seaborn предоставляет специальные функции для обоих этих видов визуализаций. Так зачем же использовать функцию relplot()? Функция Seaborn relplot() является функцией на уровне фигуры, а не на уровне осей. Это открывает разные возможности в плане того, как вы можете компоновать свои визуализации.

К концу этого урока вы изучите следующее:

  • Что такое функция Seaborn relplot()

  • Когда следует использовать функцию Seaborn relplot() вместо sns.lineplot() и sns.scatterplot()

  • Как построить несколько диаграмм рассеяния и линейных графиков с помощью функции уровня рисунка sns.relplot()

  • Как настроить заголовки, цвета и многое другое

Оглавление

Понимание функции Seaborn relplot()

Функция Seaborn relplot() используется для создания реляционных графиков на уровне фигуры на Seaborn FacetGrid. Вы можете настроить тип создаваемой визуализации, используя параметр kind=. Функция предоставляет доступ к следующим функциям на уровне осей:

  • Seaborn scatterplot() для создания диаграмм рассеяния (по умолчанию)

  • Seaborn lineplot() для создания линейных

Функция relplot() из Seaborn предоставляет фигуративный интерфейс для создания реляционных графиков. Это означает, что функция позволяет привязываться к фигуре, а не к объекту оси, открывая больше возможностей.

Давайте посмотрим, как написана функция:

# Понимание функции Seaborn relplot()

seaborn.relplot(
    data=None,         # DataFrame, содержащий данные для построения графика
    x=None,            # Имя столбца DataFrame для оси x
    y=None,            # Имя столбца DataFrame для оси y
    hue=None,          # Имя столбца DataFrame для цветового кодирования точек/линий
    size=None,         # Имя столбца DataFrame для размера точек/линий
    style=None,        # Имя столбца DataFrame для стиля точек/линий (маркеры, штрихи)
    units=None,        # Имя столбца DataFrame для группировки точек/линий (для повторных измерений)
    row=None,          # Имя столбца DataFrame для разделения графика на строки подграфиков
    col=None,          # Имя столбца DataFrame для разделения графика на столбцы подграфиков
    col_wrap=None,     # Количество столбцов для переноса подграфиков в несколько строк
    row_order=None,    # Порядок строк подграфиков
    col_order=None,    # Порядок столбцов подграфиков
    palette=None,      # Палитра цветов для цветового кодирования
    hue_order=None,    # Порядок значений для цветового кодирования
    hue_norm=None,     # Нормализация значений для цветового кодирования
    sizes=None,        # Размеры точек/линий
    size_order=None,   # Порядок значений для размеров
    size_norm=None,    # Нормализация значений для размеров
    markers=None,      # Маркеры для точек
    dashes=None,       # Штрихи для линий
    style_order=None,  # Порядок значений для стилей
    legend='auto',     # Отображение легенды ('auto', 'brief', 'full', False)
    kind='scatter',    # Тип графика ('scatter', 'line')
    height=5,          # Высота каждого подграфика в дюймах
    aspect=1,          # Соотношение сторон каждого подграфика
    facet_kws=None,    # Дополнительные аргументы для FacetGrid
    **kwargs           # Дополнительные аргументы для графика (scatterplot или lineplot)
)

Функция имеет очень похожий интерфейс с другими функциями для построения реляционных графиков. Давайте рассмотрим некоторые ключевые параметры:

  • data= предоставляет данные для построения графика через DataFrame

  • x= и y= задают переменные для отображения на осях x и y соответственно.

  • hue= добавляет дополнительную переменную для отображения через цветовую схему

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

  • Аргумент kind= определяет, какой тип графика создать. По умолчанию создается точечная диаграмма, используя ключевое слово scatter.

  • row= позволяет разбить ваш набор данных на дополнительные строки визуализаций.

  • col= позволяет разбить ваш набор данных на дополнительные столбцы визуализаций.

  • height= и aspect= управляют размером вашей визуализации данных.

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

Загрузка образца набора данных

Чтобы начать, давайте загрузим образец набора данных, который мы будем использовать на протяжении всего этого учебника. Набор данных доступен на моей странице Github и содержит информацию о акциях Microsoft, Apple и Google за 2020 год. Мы можем загрузить набор данных, используя Pandas. Это особенно полезно благодаря тесной интеграции Seaborn с библиотекой.

Давайте посмотрим, как мы можем прочитать набор данных и исследовать его первые пять строк:

# Чтение образца набора данных

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

print(df.head())  # Вывод первых 5 строк DataFrame

# Возвращает:
#         Date    Volume  Name  Open
# 0 2020-12-31  20.94213  MSFT   221
# 1 2020-12-30  20.27234  MSFT   225
# 2 2020-12-29  17.40321  MSFT   226
# 3 2020-12-28  17.93350  MSFT   224
# 4 2020-12-24  10.55057  MSFT   221

Мы можем увидеть, что с помощью метода .head() можно вывести первые пять строк набора данных. У нас есть четыре столбца данных, охватывающие дату, название акции, объем торгов и цену открытия. Давайте посмотрим, как мы можем узнать больше об этом наборе данных, используя функцию relplot() из библиотеки Seaborn.

Создание базового relplot с помощью Seaborn

По умолчанию функция Seaborn relplot() создаст диаграмму рассеяния. Чтобы создать самую простую визуализацию, мы можем просто передать следующие параметры:

  • data= для передачи нашего DataFrame

  • x= и y= для передачи меток столбцов, которые мы хотим исследовать на диаграмме рассеяния

Давайте посмотрим, как выглядит:

# Seaborn Will Default to Scatterplots
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])

sns.relplot(data=df, x='Open', y='Volume')
plt.show()

В кодовом блоке выше мы передали наш DataFrame df, а также метки столбцов 'Open' и 'Volume'. Это вернуло следующую визуализацию:

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

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

Создание линейной диаграммы с помощью Seaborn relplot

В то время как функция Seaborn relplot() по умолчанию создает точечные диаграммы, мы также можем создавать линейные графики, передавая kind='line'. Это особенно полезно при работе с непрерывными данными, такими как даты. Поскольку в нашем наборе данных доступна переменная даты, давайте посмотрим, как мы можем это использовать:

# Добавление линии упростит понимание распределения

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

sns.relplot(data=df, x='Date', y='Volume', kind='line')  # Создание линейного графика (lineplot) с использованием столбцов 'Date' и 'Volume' для осей x и y соответственно
plt.show()  # Отображение графика

В приведенном выше блоке кода мы добавили один дополнительный именованный аргумент: kind=. Это позволило нам создать совершенно другую визуализацию данных, как показано ниже.

Функция relplot() фактически использует функцию lineplot(), поэтому их поведение одинаково. По умолчанию функция агрегирует данные в единичный маркер. Поскольку у нас есть три разные точки данных для каждой даты, Seaborn вернёт среднее значение каждой точки данных.

Этот процесс также требует понимания того, как изменяются данные. Именно поэтому Seaborn добавляет к визуализации полоски ошибки. Давайте изучим эти полоски ошибки более подробно.

Понимание полос ошибок в Seaborn relplot

Когда данные агрегируются в relplot Seaborn, Seaborn добавляет полосу ошибок к визуализации. В приведенном выше примере мы создали линейный график, который возвращал среднее значение для каждого дня (поскольку у нас было три точки данных на каждый день).

По умолчанию Seaborn использует метод бутстреппинга, чтобы получить 95%-й доверительный интервал, в пределах которого новые данные окажутся в пределах диапазона ошибки.

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

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

Мы также можем изменить процент, используемый в нашем доверительном интервале, передав кортеж, содержащий ('ci', n), где n представляет процент, который мы хотим использовать. Давайте изменим наш диапазон, чтобы показать доверительный интервал в 50%.

# Modifying the Error Bar in a Line Plot
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])
sns.relplot(data=df, x='Date', y='Volume', kind='line', errorbar = ('ci', 50))
plt.show()

Визуализация возвращается следующая. Обратите внимание, что диапазон теперь уже, так как ошибка диапазона теперь намного менее неопределенная.

Возможно, вы также заметите, что параметр errorbar= не является частью определения функции relplot(). Однако он является частью функции lineplot(). Seaborn позволяет использовать любые ключевые аргументы из этой функции при построении линейного графика.

А что если мы захотим изменить тип расчета ошибки? Seaborn также упрощает эту задачу!

Seaborn принимает следующие способы вычисления погрешностей: 'ci', 'pi', 'se' или 'sd', которые обозначают следующие расчёты:

  • 'ci': доверительный интервал, который вычисляет непараметрическую неопределенность

  • 'pi': процентильный интервал, который рассчитывает непараметрическое расхождение.

  • 'se': стандартная ошибка, которая вычисляет параметрическую неопределенность

  • 'sd': стандартное отклонение, которое вычисляет параметрическое распределение

Давайте теперь вернемся к настройке нашего реляционного графика, добавив цвета, формы

Изменение relplot Сиборна с помощью цвета, форм и размеров

Добавление дополнительных деталей к нашим графикам в Seaborn можно произвести с помощью цвета, форм и размеров. Все три эти опции позволяют добавить дополнительные измерения (или столбцы данных) к вашей визуализации. Это означает, что, хотя наши графики останутся двухмерными, мы фактически можем построить график с дополнительными измерениями.

Мы можем добавить это, используя следующие параметры:

  • hue= используется для добавления дополнительных параметров в настройки цвета.

  • size= используется для изменения размера формы с использованием данных из дополнительного столбца,

  • style= используется для изменения того, как значения отображаются с использованием стилей маркеров или линий.

Давайте рассмотрим, как добавить дополнительные уровни детализации с помощью цвета.

Добавляем цвета в Seaborn Relplot

Чтобы добавить дополнительную переменную в ваш Seaborn relplot(), вы можете использовать параметр hue=, чтобы передать столбец DataFrame, который разобьет данные на несколько цветов.

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

Добавление цветовых стилей и добавление цветовых измерений

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

Давайте посмотрим, как мы можем использовать библиотеку Seaborn для добавления большего количества деталей в наш график с помощью параметра hue=

# Добавление цвета к нашему точечному графику Seaborn

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

sns.relplot(data=df, x='Open', y='Volume', palette='Set2', hue='Name')  # Создание точечного графика (scatterplot) с использованием столбцов 'Open' и 'Volume' для осей x и y соответственно, цветовое кодирование по столбцу 'Name' с использованием палитры 'Set2'
plt.show()  # Отображение графика

В приведенном выше блоке кода мы указали hue='Name'. Это означает, что мы хотим раскрасить точки на нашем диаграмме рассеивания по-разному в зависимости от того, к какой акции принадлежит точка данных. (Примечание: мы также применили палитру, хотя это исключительно для стилизации графика). Это возвращает следующее изображение:

Теперь визуализация данных стала намного яснее. Мы четко видим три разных кластера данных, что позволяет нам лучше понять закономерности в данных.

Изменение форм в сюжете Seaborn

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

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

# Изменение стилей маркеров в Seaborn

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

sns.relplot(data=df, x='Open', y='Volume', hue='Name', style='Name', palette='Set2')  # Создание точечного графика (scatterplot) с использованием столбцов 'Open' и 'Volume' для осей x и y соответственно, цветовое кодирование и стилизация маркеров по столбцу 'Name' с использованием палитры 'Set2'
plt.show()  # Отображение графика

В приведённом выше коде мы передали столбец 'Name' в параметры hue= и style=. Это означает, что столбец представлен как стилем маркера, так и цветом.

Хотите вместо этого создать линейный график?

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

В этом случае мы возвращаем следующее изображение:

В следующем разделе давайте рассмотрим, как мы можем лучше понять распределение, используя размер маркера в качестве переменной.

Изменение размеров в Seaborn Relplot

Наконец, мы можем добавить больше деталей в реляционный график, используя параметр size=. Этот параметр позволяет передать другой столбец, который будет использован для определения размера маркеров.

В приведенном ниже примере мы фильтруем наш DataFrame так, чтобы отображались только записи для Apple. Мы также отображаем дату по оси x, что может не иметь большого смысла. Однако, пример покажет, как изменяется размер точек.

# Добавление размерности размера к нашему точечному графику

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

filtered = df[df['Name'] == 'AAPL']  # Фильтрация DataFrame, оставляя только строки, где 'Name' равно 'AAPL'

sns.relplot(data=filtered, x='Date', y='Volume', size='Open')  # Создание точечного графика (scatterplot) с использованием столбцов 'Date' и 'Volume' для осей x и y соответственно, и размер точек, зависящий от значений столбца 'Open'
plt.show()  # Отображение графика

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

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

Создание подмножеств графиков со строками и столбцами

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

Вместо разделения визуализации с помощью цвета или стиля (хотя вы можете сделать и это), Seaborn разделяет визуализацию на несколько подграфиков. Однако, вместо необходимости явно задавать подграфики, Seaborn нанесет их на сетку FacetGrid

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

Добавление столбцов в Seaborn Relplot

Чтобы создать столбцы подграфиков, мы можем использовать параметр col=. Этот параметр принимает либо метку столбца DataFrame Pandas, либо массив данных. Разделим нашу визуализацию данных на столбцы в зависимости от того, к каким акциям они относятся:

# Использование столбцов для разделения данных по переменной

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

sns.relplot(data=df, x='Date', y='Volume', kind='line', col='Name')  # Создание линейного графика (lineplot), разделенного на столбцы по 'Name'
plt.show()  # Отображение графика

В кодовом блоке выше мы указали Seaborn создать колонки малых множеств с использованием столбца 'Name'. Это означает, что Seaborn создаст отдельный подграф в более широкой FacetGrid для каждого уникального значения в столбце 'Name'

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

Из-за этого мы можем использовать параметр col_wrap= для переноса столбцов. Параметр принимает целое число, которое указывает, сколько столбцов должно быть, прежде чем диаграммы будут перенесены на другую строку.

Давайте создадим столбец, который представляет квартал даты с использованием Pandas и обернём малые множественные:

# Перенос столбцов в Seaborn relplot()

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

df['Quarter'] = df['Date'].dt.quarter  # Создание нового столбца 'Quarter' с номером квартала из столбца 'Date'
sns.relplot(data=df, x='Open', y='Volume', col='Quarter', col_wrap=2, hue='Name', palette='Set2')  # Создание графика relplot, разделенного на столбцы по 'Quarter' и переносом столбцов по 2 в ряд, цветовое кодирование по 'Name' с использованием палитры 'Set2'
plt.show()  # Отображение графика

Это возвращает следующую визуализацию данных, где наши малые множества расположены вокруг второго столбца.

В следующем разделе вы узнаете, как добавить дополнительные строки визуализаций.

Добавление строк в Seaborn Relplot

Seaborn также позволяет передавать строки небольших множеств. Это работает так же, как добавление столбцов. Однако вы также можете комбинировать параметр rows= с параметром col=, чтобы создать строки и столбцы небольших множеств.

Посмотрим, как это выглядит:

# Создание строк и столбцов множественных графиков

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

df['Quarter'] = df['Date'].dt.quarter  # Создание нового столбца 'Quarter' с номером квартала из столбца 'Date'
sns.relplot(data=df, x='Open', y='Volume', row='Quarter', col='Name')  # Создание графика relplot, разделенного на строки по 'Quarter' и столбцы по 'Name'
plt.show()  # Отображение графика

Во фрагменте кода выше мы передали row='Quarter' и col='Name', чтобы разделить небольшие мультипликаторы на основе этих столбцов. Это возвращает следующую визуализацию:

Давайте теперь рассмотрим, как можно настроить визуализацию данных, добавив заголовки и метки осей на наши графики.

Изменение названий и меток осей в Seaborn Relplot

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

Добавление заголовка к сюжету Seaborn

Чтобы добавить заголовок к графику Seaborn с помощью метода relplot(), можно использовать метод fig.suptitle() из Matplotlib. Для этого сначала нужно будет отрегулировать интервалы нашего объекта фигуры. Этот процесс может быть немного эвристическим и требовать несколько попыток.

Нижеприведенным блоком кода показаны:

# Настройка заголовков в relplot()

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

df['Quarter'] = df['Date'].dt.quarter  # Создание нового столбца 'Quarter' с номером квартала из столбца 'Date'
df = df[df['Quarter'] < 3]  # Фильтрация DataFrame, оставляя только строки с кварталами 1 и 2

scatter = sns.relplot(data=df, x='Open', y='Volume', row='Quarter', col='Name')  # Создание графика relplot, разделенного на строки по 'Quarter' и столбцы по 'Name'

scatter.fig.subplots_adjust(top=0.92)  # Регулировка расположения подграфиков для размещения заголовка
scatter.fig.suptitle('Stock Volume vs Open Price', size=15)  # Добавление общего заголовка для всего графика
plt.show()  # Отображение графика

В приведённом выше фрагменте кода мы внесли ряд важных изменений:

  1. Мы отфильтровали DataFrame, чтобы визуализация была более легко читаемой.

  2. Мы присвоили переменной scatter значение функции

  3. Затем мы настроили верхний отступ с помощью fig.subplots_adjust()

  4. Затем мы добавили suptitle() к объекту фигуры

Этот возвратил следующую визуализацию данных:

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

Добавление заголовков к строкам и столбцам в Seaborn Relplot

Seaborn предоставляет невероятно гибкие параметры форматирования для стилизации маленьких множеств, созданных с помощью параметров col= и row= .

# Настройка заголовков подграфиков в relplot()

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

df['Quarter'] = df['Date'].dt.quarter  # Создание нового столбца 'Quarter' с номером квартала из столбца 'Date'
df = df[df['Quarter'] < 3]  # Фильтрация DataFrame, оставляя только строки с кварталами 1 и 2

scatter = sns.relplot(data=df, x='Open', y='Volume', row='Quarter', col='Name')  # Создание графика relplot, разделенного на строки по 'Quarter' и столбцы по 'Name'

scatter.fig.subplots_adjust(top=0.92)  # Регулировка расположения подграфиков для размещения заголовка
scatter.fig.suptitle('Stock Volume vs Open Price', size=15)  # Добавление общего заголовка для всего графика

scatter.set_titles(row_template='Company: {col_name}', col_template="Quarter #{row_name}", size=12)  # Установка заголовков для подграфиков на основе столбцов и строк
plt.show()  # Отображение графика

В кодовом блоке выше мы использовали метод .set_titles(), доступный объектам FacetGrid. Этот метод позволяет использовать параметры row_template= и col_template=, которые дают доступ к переменным col_name и row_name в синтаксисе, похожем на форматирование f

Это возвращает визуализацию данных ниже:

В следующем разделе вы узнаете, как настраивать метки осей в relplot библиотеки Seaborn.

Изменение меток осей в Seaborn Relplot

По умолчанию, Seaborn использует названия столбцов как подписи осей в визуализации. Однако во многих случаях это не очень описательное название. Поскольку функция relplot() возвращает объект FacetGrid, мы можем использовать вспомогательные методы для решения этой проблемы,

  • .set_xlabel(), который устанавливает метку оси x

  • .set_ylabel(), который устанавливает метку оси y

  • .set_axis_labels(), который устанавливает метки обеих осей: x и y

Давайте посмотрим, как это выглядит в Seaborn:

# Настройка меток осей в Seaborn relplot

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
    'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты

df['Quarter'] = df['Date'].dt.quarter  # Создание нового столбца 'Quarter' с номером квартала из столбца 'Date'
df = df[df['Quarter'] < 3]  # Фильтрация DataFrame, оставляя только строки с кварталами 1 и 2

scatter = sns.relplot(data=df, x='Open', y='Volume', row='Quarter', col='Name')  # Создание графика relplot, разделенного на строки по 'Quarter' и столбцы по 'Name'

scatter.fig.subplots_adjust(top=0.92)  # Регулировка расположения подграфиков для размещения заголовка
scatter.fig.suptitle('Stock Volume vs Open Price', size=15)  # Добавление общего заголовка для всего графика
scatter.set_titles(row_template='Company: {col_name}', col_template="Quarter #{row_name}", size=12)  # Установка заголовков для подграфиков на основе столбцов и строк

scatter.set_xlabels('Open Price')  # Установка метки оси x
scatter.set_ylabels('Volume Traded')  # Установка метки оси y
plt.show()  # Отображение графика

Во фрагменте кода выше, мы добавили две дополнительные строки кода к концу, чтобы настроить метки осей нашего визуализационного данных. Это возвращает следующую визуализацию данных:

В следующем разделе вы узнаете, как изменить размер relplot в Seaborn

Изменение размера Seaborn Relplot

Поскольку функция Seaborn relplot() возвращает объект FacetGrid, мы можем легко изменить размер возвращаемой фигуры. Для этого можно использовать два следующих параметра:

  1. height= определяет высоту каждой грани в дюймах

  2. aspect= который определяет соотношение сторон так, что ширина равна height * aspect

Давайте посмотрим, как изменить размер простой визуализации данных в Seaborn:

# Изменение размера визуализации данных Seaborn

# Изменение размера визуализации

import seaborn as sns  # Импорт библиотеки seaborn для визуализации данных
import pandas as pd  # Импорт библиотеки pandas для работы с данными
import matplotlib.pyplot as plt  # Импорт библиотеки matplotlib для построения графиков

df = pd.read_csv(
   'https://raw.githubusercontent.com/datagy/data/main/stocks-relplot.csv', 
    parse_dates=['Date'])  # Загрузка данных из CSV-файла и преобразование столбца 'Date' в формат даты
df['Month'] = df['Date'].dt.month  # Создание нового столбца 'Month' с номером месяца из столбца 'Date'

sns.relplot(
    data=df, x='Month', y='Volume', kind='line',  # Создание линейного графика (lineplot)
    hue='Name', palette='Set2',  # Цветовое кодирование по столбцу 'Name' с использованием палитры 'Set2'
    height=5, aspect=1.6)  # Установка высоты графика в 5 дюймов и соотношения сторон 1.6
plt.show()  # Отображение графика

В коде выше мы указали height=5, aspect=1.6. Это означает, что высота фасета будет 5 дюймов, а ширина — 8 дюймов (5 * 1.6). Это возвращает следующее визуальное представление данных:

Изменить размер визуализации невероятно просто. Это может быть очень полезно при работе с данными, которые распространяются по горизонтали или вертикали, уменьшая пустое пространство.

Заключение

В этом уроке вы узнали, как использовать функцию relplot() из библиотеки Seaborn для создания визуализаций взаимосвязей на уровне фигуры. Эта функция позволяет легко создавать диаграммы рассеяния и линейные графики, обеспечивая знакомый и согласованный интерфейс.

Сначала вы научились создавать простые объекты на уровне фигуры, затем перешли к более сложным примерам, добавляя дополнительные детали с помощью цвета, стиля и размера. Далее вы научились создавать малые множества, добавляя ряды и столбцы графиков. Наконец, вы научились настраивать визуализации, изменяя заголовки, метки осей и размер визуала.

Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с ресурсами ниже

Last updated