Seaborn stripplot: Jitter Plots для распределений категориальных данных

Функция stripplot в библиотеке Seaborn позволяет создавать визуализации данных, которые легко и эффективно показывают числовое распределение данных по категориям. Не так много функций, которые позволяют это сделать: boxplot и violin plot — это две из них, но они могут быть сложными для аудитории, не владеющей техническими знаниями.

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

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

  • Как понимать и использовать функцию Seaborn sns.stripplot()

  • Когда диаграммы с джиттером являются хорошей альтернативой простым точечным диаграммам, ящичным диаграммам и виолончельным диаграммам

  • Как настроить строчные графики Seaborn для добавления деталей с помощью цвета и форм маркеров

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

Содержание

Что такое полосовые сюжеты и когда вы хотите их использовать?

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

Взгляните на графики ниже, которые сравнивают различные варианты визуализации, включая диаграммы разброса (strip plots), скрипичные графики (violin plots) и ящики с усами (box and whisker plots)

Comparing Strip Plots to Different Data Visualizations
Сравнение полосовых диаграмм с различными визуализациями данных

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

Понимание функции Seaborn stripplot

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

seaborn.stripplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, jitter=True, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, hue_norm=None, native_scale=False, formatter=None, legend='auto', ax=None, **kwargs)

Мы видим, что есть много параметров. Давайте разберем важные параметры функции stripplot() в Seaborn:

  • data= определяет данные, которые мы хотим использовать, например, Pandas DataFrame

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

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

  • alpha= позволяет изменять прозрачность точек. Обратите внимание, что это не явный параметр функции, но его можно передать, используя дополнительные именованные аргументы функции scatterplot в Matplotlib.

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

Как создать ленточный график в Seaborn

Для создания strip plot в Seaborn, вы можете передать DataFrame из Pandas и два названия столбцов (для оси x и оси y) в функцию sns.stripplot(). Поскольку Seaborn использует общую структуру для своих функций, создание strip plot просто и интуитивно понятно. Давайте посмотрим, как можно создать простой jitter plot в Seaborn:

# How to Create a Seaborn Split Plot
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('penguins')

sns.stripplot(data=df, x='island', y='bill_length_mm')
plt.show()

В приведенном выше блоке кода мы передали наш DataFrame, df, в параметр data=. Аналогично, поскольку мы используем Pandas DataFrame, мы можем передавать метки столбцов как строки в соответствующие параметры осей x и y. Это возвращает следующее изображение:

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

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

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

# How to Add Another Variable with Color to a Seaborn Split Plot
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('penguins')

sns.stripplot(data=df, x='island', y='bill_length_mm', hue='sex')
plt.show()

В приведённом выше коде мы добавили hue='sex', который разделяет значения в этом столбце на разные цвета. Это возвращает изображение ниже, где точки разделены на разные цвета.

Adding Another Dimension to Seaborn Strip Plots with hue
Добавление еще одного измерения к полосовым диаграммам Сиборна с помощью оттенка

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

Как изменить прозрачность на полосовых диаграммах Seaborn

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

# How to Change the Transparency of a Seaborn Split Plot
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('penguins')

sns.stripplot(data=df, x='island', y='bill_length_mm', hue='sex', alpha=0.35)
plt.show()

В приведенном выше фрагменте кода мы указали alpha=0.35, что устанавливает прозрачность на 35%. Это возвращает изображение ниже, где перекрывающиеся значения становятся намного яснее.

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

Как добавить полосовые сюжеты к графикам Seaborn Violin

Мы можем объединить strip-диаграмму с violin-диаграммой в Seaborn, чтобы пользователи лучше поняли violin-диаграмму. С Seaborn это просто: нужно вызвать обе функции. Seaborn добавит диаграммы на тот же объект оси. Давайте посмотрим, как это выглядит:

# How to Overlay a Strip Plot over a Violin Plot in Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('penguins')

sns.violinplot(data=df, x='island', y='bill_length_mm', )
sns.stripplot(data=df, x='island', y='bill_length_mm', alpha=0.25, color='black')
plt.show()

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

Adding Seaborn Strip Plots to Violin Plots
Добавление полосовых сюжетов Seaborn к сюжетам скрипки

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

Как изменить палитру ленточного графика Seaborn

Seaborn позволяет легко изменять палитру цветов вашего графика. Один из способов сделать это - вызвать функцию sns.set_palette() и передать ей именованную палитру. В примере ниже мы используем палитру 'Set2'

# How to Change the Palette of a Seaborn Strip Plot
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('penguins')
sns.set_palette('Set2')
sns.stripplot(data=df, x='island', y='bill_length_mm', hue='sex', alpha=0.35)
plt.show()

Передав палитру 'Set2', Seaborn создает следующее изображение:

Changing the Palette in a Seaborn Strip Plot
Изменение палитры на ленточном графике Seaborn

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

Как добавить заголовки и метки осей к полосовым диаграммам Seaborn

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

  • ax.set_title(), чтобы установить заголовок,

  • ax.set_xlabel(), чтобы установить метку оси X, и

  • ax.set_ylabel() для установки метки оси Y

Параметры настройки Seaborn

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

# How to Add a Title and Axis Labels to a Seaborn Strip Plot
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('penguins')
sns.set_palette('Set2')
chart = sns.stripplot(data=df, x='island', y='bill_length_mm', hue='sex', alpha=0.35)

chart.set_title('Bill Length by Island', fontdict={'size':18})
chart.set_xlabel('Bill Length (mm)', fontdict={'weight':'bold'})
chart.set_ylabel('Island', fontdict={'weight':'bold'})
plt.show()

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

Видно, что это добавляет много деталей к графикам в Seaborn, делая их более понятными для читателя.

Заключение

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

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

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

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

  • Seaborn Catplot — Визуализация категориальных данных в Python

  • Seaborn Boxplot – Как создать прямоугольные и усовые диаграммы

  • Графики Seaborn Violin на Python: полное руководство

  • Seaborn barplot() – создание гистограмм с помощью sns.barplot()

  • Seaborn Countplot — подсчет категориальных данных в Python

  • Swarmplot Seaborn: графики пчелиного роя для распределения категориальных данных

  • График Seaborn Pointplot: центральная тенденция для категориальных данных

Last updated