Создание многосекционных сеток в Seaborn с помощью FacetGrid

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

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

  • Как добавить строки и столбцы или данные в график Seaborn для создания подграфиков

  • Как работает объект Seaborn FacetGrid и как его использовать

Оглавление

Создание небольших кратных (подсюжетов) с помощью Seaborn

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

Adding color with the hue parameter to a Seaborn multi-plot grid
Добавление цвета с параметром hue в сетку мультиплотов Seaborn

Как вы узнаете в следующем разделе, эти визуализации построены на основе FacetGrid. Поэтому необходимо использовать функции фигурного уровня Seaborn, которые включают следующие:

Теперь давайте разберемся, как использовать эти функции для добавления строк и столбцов малых множеств в 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=, разделена на несколько подграфиков:

Using columns in a Seaborn Small Multiples Plot
Использование столбцов в графике Seaborn с малым множеством графиков

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

Добавление рядов визуализаций к графику в 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=, чтобы создать сетку субплотов

Using rows in a Seaborn Small Multiples Plot
Использование строк в диаграмме Small Multiples

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

Добавление цвета к визуализации сюжета в 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()  # Отображение графика

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

Adding color with the hue parameter to a Seaborn multi-plot grid
Добавление цвета с помощью параметра hue в сетку графиков Seaborn.

Теперь, когда вы рассмотрели некоторые практические примеры, давайте погрузимся в то, как работает 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= .

Creating an Empty Seaborn FacetGrid
Создание пустой сетки Seaborn

Поскольку в нашем наборе данных три уникальных значения в столбце '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'). Наш код более явный, хотя второй код проще написать (и, возможно, проще понять).

Adding Data to a Seaborn FacetGrid Scatterplot
Добавление данных в диаграмму рассеяния Seaborn FacetGrid

График выше показывает FacetGrid, созданный путем передачи нашего DataFrame с разделением по столбцу island.

Заключение

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

Сначала вы научились использовать функции на уровне фигур в Seaborn для создания неявных FacetGrid. Они могут использоваться с параметрами row= и col= для передачи дополнительных переменных для разделения данных. Затем вы научились создавать FacetGrid с нуля и отображать функции и данные для визуализации данных.

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

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

Last updated