Создание многосекционных сеток в Seaborn с помощью FacetGrid
Seaborn — это библиотека для визуализации данных, которая позволяет создавать сложные статистические визуализации простым способом. Одним из её преимуществ является возможность легко добавлять подграфики. В этом руководстве вы узнаете, как создавать сетки с несколькими графиками, используя Seaborn FacetGrid и подграфики. Поскольку Seaborn призван упростить создание сложных визуализаций, он предоставляет высокоуровневые функции для простого создания сеток графиков.
В конце этого руководства вы узнаете следующее:
Как добавить строки и столбцы или данные в график Seaborn для создания подграфиков
Как работает объект Seaborn FacetGrid и как его использовать
Оглавление
Создание небольших кратных (подсюжетов) с помощью Seaborn
Seaborn упрощает добавление нескольких подграфиков на график с параметрами col=
, row=
и hue=
. Эти параметры позволяют добавлять небольшие множественные графики в строки и столбцы основной фигуры графика для дальнейшего разделения данных на эти категории. Это позволяет создавать визуализации, такие как представленная ниже:

Как вы узнаете в следующем разделе, эти визуализации построены на основе FacetGrid. Поэтому необходимо использовать функции фигурного уровня Seaborn, которые включают следующие:
sns.relplot()
for relational datasns.displot()
for distribution datasns.catplot()
for categorical data
Теперь давайте разберемся, как использовать эти функции для добавления строк и столбцов малых множеств в Seaborn.
Добавление столбцов визуализаций к графику в Seaborn
Добавление столбцов подзаголовков к визуализации на уровне фигуры в Seaborn можно осуществить с помощью параметра col=
. Например, если мы хотим добавить малые мультипликаты к столбцам диаграммы рассеяния, мы могли бы использовать следующий код:
# Добавление столбцов подграфиков в Seaborn
import seaborn as sns # Импорт библиотеки seaborn для визуализации данных
import matplotlib.pyplot as plt # Импорт библиотеки matplotlib для построения графиков
df = sns.load_dataset('penguins') # Загрузка набора данных 'penguins'
sns.relplot(data=df, x='bill_length_mm', y='bill_depth_mm', col='island') # Создание графика relplot, разделенного на столбцы по уникальным значениям столбца 'island'
plt.show() # Отображение графика
Это возвращает следующее изображение, где переменная, переданная в параметр col=
, разделена на несколько подграфиков:

В следующем разделе вы узнаете, как добавлять строки дополнительных графиков.
Добавление рядов визуализаций к графику в Seaborn
Добавление рядов подграфиков к визуализации на уровне фигуры в Seaborn можно осуществить с помощью параметра row=
. Например, если мы хотим добавить малые мультипликаты к рядам диаграммы рассеяния, мы могли бы использовать следующий код:
# Добавление строк подграфиков на график Seaborn
import seaborn as sns # Импорт библиотеки seaborn для визуализации данных
import matplotlib.pyplot as plt # Импорт библиотеки matplotlib для построения графиков
df = sns.load_dataset('penguins') # Загрузка набора данных 'penguins'
sns.relplot(data=df, x='bill_length_mm', y='bill_depth_mm', row='sex', col='island') # Создание графика relplot, разделенного на строки по уникальным значениям столбца 'sex' и на столбцы по уникальным значениям столбца 'island'
plt.show() # Отображение графика
Это возвращает следующее изображение, где мы также добавили строки субплотов. Мы объединили параметры col=
и row=
, чтобы создать сетку субплотов

В следующем разделе вы узнаете, как добавить еще одну переменную данных, разделяя данные по цвету.
Добавление цвета к визуализации сюжета в Seaborn
Помимо разделения данных на строки и столбцы подграфиков, мы также можем добавить цвет для добавления еще одного измерения.
# Добавление дополнительных данных с параметром Hue
import seaborn as sns # Импорт библиотеки seaborn для визуализации данных
import matplotlib.pyplot as plt # Импорт библиотеки matplotlib для построения графиков
df = sns.load_dataset('penguins') # Загрузка набора данных 'penguins'
sns.relplot(data=df, x='bill_length_mm', y='bill_depth_mm', row='sex', col='island', hue='species') # Создание графика relplot, разделенного на строки по уникальным значениям столбца 'sex', на столбцы по уникальным значениям столбца 'island' и с цветовым кодированием по уникальным значениям столбца 'species'
plt.show() # Отображение графика
При использовании этого кода мы получаем визуализацию, представленную ниже, где дополнительная переменная добавлена с помощью цвета.

Теперь, когда вы рассмотрели некоторые практические примеры, давайте погрузимся в то, как работает Seaborn
Понимание Seaborn FacetGrid для создания подсюжетов
Seaborn FacetGrid позволяет разместить несколько графиков на одном графике. Это фактически тип объекта, который возвращается при создании визуализаций на уровне фигуры, например, при использовании relplot()
.
Посмотрим, как это выглядит на языке Python:
# Создание пустой сетки FacetGrid
import seaborn as sns # Импорт библиотеки seaborn для визуализации данных
import matplotlib.pyplot as plt # Импорт библиотеки matplotlib для построения графиков
df = sns.load_dataset('penguins') # Загрузка набора данных 'penguins'
grid = sns.FacetGrid(data=df, col='island') # Создание объекта FacetGrid, разделенного на столбцы по уникальным значениям столбца 'island'
В приведенном выше примере мы создали FacetGrid grid
, передав DataFrame df
в параметр data=
, а столбец 'island'
в параметр col=
.

Поскольку в нашем наборе данных три уникальных значения в столбце 'island'
, создаются три пустых графика. Мы можем передавать данные, используя метод .map()
, который позволяет передать функцию для отображения, а также дополнительные параметры.
Например, если мы передаем функцию sns.scatterplot
, нам нужно передать как минимум два дополнительных параметра: один для оси x и один для оси y. Давайте посмотрим, как это выглядит:
# Добавление данных в отображение FacetGrid
import seaborn as sns # Импорт библиотеки seaborn для визуализации данных
import matplotlib.pyplot as plt # Импорт библиотеки matplotlib для построения графиков
df = sns.load_dataset('penguins') # Загрузка набора данных 'penguins'
grid = sns.FacetGrid(data=df, col='island') # Создание объекта FacetGrid, разделенного на столбцы по уникальным значениям столбца 'island'
grid.map(sns.scatterplot, 'bill_depth_mm', 'bill_length_mm') # Добавление точечного графика (scatterplot) к каждой подграфике сетки, используя столбцы 'bill_depth_mm' и 'bill_length_mm' для осей x и y соответственно
plt.show() # Отображение графика
Передавая эти дополнительные сопоставления, мы можем создать тот же график, который могли бы создать с помощью: sns.relplot(data=df, x='bill_depth_mm', y='bill_length_mm', col='island')
. Наш код более явный, хотя второй код проще написать (и, возможно, проще понять).

График выше показывает FacetGrid, созданный путем передачи нашего DataFrame с разделением по столбцу island.
Заключение
В этом уроке вы научились использовать Seaborn для создания подграфиков методом небольших множеств. Используя FacetGrid из Seaborn, вы можете разделить ваши графики на строки и столбцы, распределив их по нескольким переменным.
Сначала вы научились использовать функции на уровне фигур в Seaborn для создания неявных FacetGrid. Они могут использоваться с параметрами row=
и col=
для передачи дополнительных переменных для разделения данных. Затем вы научились создавать FacetGrid с нуля и отображать функции и данные для визуализации данных.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь с ресурсами ниже:
Seaborn relplot – Создание диаграмм рассеяния и линейных диаграмм
Last updated