Seaborn stripplot: Jitter Plots для распределений категориальных данных
Last updated
Last updated
Функция stripplot в библиотеке Seaborn позволяет создавать визуализации данных, которые легко и эффективно показывают числовое распределение данных по категориям. Не так много функций, которые позволяют это сделать: boxplot и violin plot — это две из них, но они могут быть сложными для аудитории, не владеющей техническими знаниями.
Это то, где на помощь приходит стрип-плот (или джиттер-плот)! Фактически, стрип-плот можно комбинировать с графиком рамки и усов или с графиком виолончели, чтобы добавить дополнительные детали. В этом руководстве вы узнаете, как использовать функцию stripplot из Seaborn для создания джиттер-диаграмм рассеивания для легкой визуализации числовых распределений по категориальным переменным.
К концу этого руководства вы научитесь следующему:
Как понимать и использовать функцию Seaborn sns.stripplot()
Когда диаграммы с джиттером являются хорошей альтернативой простым точечным диаграммам, ящичным диаграммам и виолончельным диаграммам
Как настроить строчные графики Seaborn для добавления деталей с помощью цвета и форм маркеров
Как настроить метки, заголовки и другие элементы
Содержание
Прежде чем приступить к созданию полосчатых графиков Seaborn, давайте разберемся, что это такое и почему они полезны. Визуализация числовых распределений по категориям может быть сложной задачей. Например, используя такие техники, как столбчатые диаграммы, необходимо агрегировать значения в одно. Использование таких визуализаций, как точечные диаграммы, приводит к результатам, которые могут быть трудными для понимания (посмотрите на верхний правый визуал ниже).
Функция stripplot()
в Seaborn предлагает много различных параметров. Они позволяют значительно настроить графики. Давайте рассмотрим параметры, доступные в функции stripplot Seaborn:
Мы видим, что есть много параметров. Давайте разберем важные параметры функции stripplot()
в Seaborn:
data=
определяет данные, которые мы хотим использовать, например, Pandas DataFrame
x=
и y=
определяют ряды данных или метки столбцов, которые мы хотим использовать для оси x и оси y соответственно
hue=
добавляет еще одно измерение к графику, используя разные цвета для различных переменных
alpha=
позволяет изменять прозрачность точек. Обратите внимание, что это не явный параметр функции, но его можно передать, используя дополнительные именованные аргументы функции scatterplot в Matplotlib.
Теперь, когда у вас есть хорошее понимание важных параметров функции stripplot из Seaborn, давайте приступим к созданию графика с использованием этой функции.
Для создания strip plot в Seaborn, вы можете передать DataFrame из Pandas и два названия столбцов (для оси x и оси y) в функцию sns.stripplot()
. Поскольку Seaborn использует общую структуру для своих функций, создание strip plot просто и интуитивно понятно. Давайте посмотрим, как можно создать простой jitter plot в Seaborn:
В приведенном выше блоке кода мы передали наш DataFrame, df
, в параметр data=
. Аналогично, поскольку мы используем Pandas DataFrame, мы можем передавать метки столбцов как строки в соответствующие параметры осей x и y. Это возвращает следующее изображение:
В следующем разделе вы узнаете, как добавить дополнительные переменные к стрип-плотам, используя дополнительные цвета.
В созданном выше графике мы добавили информацию по двум измерениям. Мы можем добавить третью переменную, используя параметр hue=
. Это добавляет дополнительную колонку данных, разделяя переменную на разные цвета.
В приведённом выше коде мы добавили hue='sex'
, который разделяет значения в этом столбце на разные цвета. Это возвращает изображение ниже, где точки разделены на разные цвета.
Мы видим, что точки были добавлены. Однако, из-за их полной непрозрачности, может быть трудно увидеть, где они сконцентрированы. Вы узнаете, как это исправить, в следующем разделе.
По умолчанию точки на ленточном графике полностью непрозрачны. Это может затруднить восприятие различных кластеров значений. Чтобы решить эту проблему, мы можем изменить прозрачность каждого маркера, используя параметр alpha=
. Параметр принимает значение от 0 до 1, где более низкие значения более прозрачны.
В приведенном выше фрагменте кода мы указали alpha=0.35
, что устанавливает прозрачность на 35%. Это возвращает изображение ниже, где перекрывающиеся значения становятся намного яснее.
В следующем разделе вы узнаете, как творчески использовать джиттер-плоты, добавляя их к виолончельным графикам.
Мы можем объединить strip-диаграмму с violin-диаграммой в Seaborn, чтобы пользователи лучше поняли violin-диаграмму. С Seaborn это просто: нужно вызвать обе функции. Seaborn добавит диаграммы на тот же объект оси. Давайте посмотрим, как это выглядит:
Вызов функций скрипичного и точечного графиков в Seaborn отображает оба этих графика в одной визуализации. Это возвращает следующую визуализацию данных:
Мы можем видеть, что это позволяет пользователям лучше понять основное распределение на графике скрипки в Seaborn.
Seaborn позволяет легко изменять палитру цветов вашего графика. Один из способов сделать это - вызвать функцию sns.set_palette()
и передать ей именованную палитру. В примере ниже мы используем палитру 'Set2'
Передав палитру 'Set2'
, Seaborn создает следующее изображение:
В следующем разделе вы узнаете, как добавить заголовки и метки осей к вашему графику разброса в Seaborn.
По умолчанию Seaborn не включает заголовок, но добавляет метки столбцов в качестве меток осей x и y. Мы можем изменить это, используя следующие методы:
ax.set_title()
, чтобы установить заголовок,
ax.set_xlabel()
, чтобы установить метку оси X, и
ax.set_ylabel()
для установки метки оси Y
Мы видим, что смогли добавить метку и настроить её, используя параметр 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: центральная тенденция для категориальных данных
Взгляните на графики ниже, которые сравнивают различные варианты визуализации, включая (strip plots), () и ящики с усами ()
Здесь полезны strip графики. Они добавляют некоторый шум к точкам, чтобы лучше понять распределение различных данных. Это похоже на , которая добавляет более структурированный шум к графикам.
Существует множество различных параметров настройки, которые позволяют добавить гибкость в то, как ваши . Давайте посмотрим, как это выглядит: