Seaborn displot – Распределенческие графики в Python
В этом учебнике вы узнаете, как создавать графики распределения Seaborn с использованием функции sns.displot(). Графики распределения показывают, как распределена переменная (или несколько переменных). Seaborn предоставляет множество различных функций визуализации данных о распределении, включая создание гистограмм или оценок плотности ядра.
Seaborn предоставляет специализированные функции для обоих этих видов визуализаций. Так почему же вы захотите использовать функцию displot()? Функция displot()
в Seaborn является функцией на уровне фигур, а не на уровне осей. Это открывает разные возможности в том, как вы строите свои визуализации.
К концу этого учебного пособия вы узнаете следующее:
Что такое функция Seaborn
displot()
Когда использовать функцию Seaborn
displot()
вместо специальных функцийКак построить несколько графиков с помощью функции уровня фигуры
sns.displot()
Как настроить заголовки, цвета и многое другое
Оглавление
Понимание функции Seaborn displot()
Функция displot()
библиотеки Seaborn используется для создания рисунков на уровне фигур на основе сетки FacetGrid Seaborn. Вы можете настроить тип визуализации, который будет создан, с помощью параметра kind=
Функция displot()
в Seaborn предоставляет интерфейс уровня фигуры для создания категориальных графиков. Это означает, что функция позволяет выполнять отображение на уровне фигуры, а не объекта осей. Это открывает гораздо больше возможностей.
Давайте посмотрим, как написана функция:
Функция позволяет строить следующие типы визуализации, изменяемые параметром kind=
Гистограммы с функцией Seaborn
histplot()
Графики оценки плотности ядра с помощью функции Seaborn
kdeplot()
Графики эмпирической кумулятивной функции распределения с помощью функции Seaborn
ecdfplot()
Ковры с функцией Seaborn
rugplot()
Некоторые из этих визуализаций немного более специфические и нишевые. Ниже представлено изображение, демонстрирующее, как аналогичное распределение выглядит в различных графиках:
Функция имеет интерфейс, очень похожий на интерфейсы других функций для построения распределений. Давайте рассмотрим некоторые ключевые параметры:
data=
предоставляет данные для построения с помощью объекта DataFrame библиотеки Pandasx=
иy=
задают переменные для отображения на оси x и оси y соответственноhue=
добавляет дополнительную переменную для отображения через цветовое кодирование
Дополнительно, функция предлагает некоторые дополнительные параметры, доступные только в функции displot()
. Давайте исследуем их:
kind=
определяет тип создаваемой диаграммы. По умолчанию будет создана гистограмма, используя аргумент ключевого словаrow=
позволяет вам разделить ваш набор данных на дополнительные строки визуализацийcol=
позволяет вам разделить ваш набор данных на дополнительные столбцы визуализацийheight=
иaspect=
контролируют размер вашей визуализации данных
Теперь, когда у вас есть четкое представление о возможностях, давайте погрузимся в изучение методов использования функции для создания полезных визуализаций данных.
Загрузка образца набора данных
Чтобы следовать этому руководству, давайте используем набор данных, предоставленный библиотекой Seaborn. Мы воспользуемся популярным набором данных о чаевых, доступным через функцию sns.load_dataset()
Давайте посмотрим, как мы можем прочитать набор данных и изучить его первые пять строк:
В нашем распоряжении имеется ряд переменных, включая как категориальные, так и непрерывные.
Создание базового графика с помощью Seaborn
По умолчанию функция displot()
в Seaborn создает гистограмму. Для создания самой базовой визуализации мы можем просто передать следующие параметры:
data=
для передачи в наш DataFramex=
илиy=
для передачи меток столбцов, которые мы хотим изучить на гистограмме.
Давайте посмотрим, как выглядит этот код:
В представленном выше блоке кода мы передали наш DataFrame df
вместе с меткой столбца 'tip'
. Это привело к следующей визуализации:
Мы видим, что поскольку мы отображаем одну переменную по оси x, а Seaborn возвращает гистограмму. Этот график позволяет нам исследовать распределение данных в этой колонке.
Создание графика оценки плотности ядра (Kernel Density Estimate) с помощью Seaborn displot
Хотя функция displot()
в библиотеке Seaborn по умолчанию создает гистограммы, мы также можем создавать графики плотности распределения (KDE), используя параметр kind='kde'
. Давайте посмотрим, как это выглядит:
В приведенном выше блоке кода мы добавили еще один ключевой аргумент: kind=
. Это позволило нам создать совершенно другую визуализацию данных, как показано ниже:
Поскольку функция displot()
на самом деле использует функцию kdeplot()
в своей работе, поведение обеих функций одинаково. Это означает, что мы можем использовать различные ключевые аргументы, которые предоставляет функция
Изменение графика Seaborn с помощью цвета
Мы можем добавить дополнительные детали в наши графики Seaborn, используя цвет. Это позволяет добавить дополнительные измерения (или столбцы данных) в нашу визуализацию. Это означает, что, хотя наши графики останутся двухмерными, мы можем на самом деле визуализировать дополнительные измерения.
Мы можем добавить дополнительные параметры цвета, используя параметр hue=
. Давайте исследуем, как мы можем добавлять дополнительные уровни детализации с использованием цвета.
Добавление цвета в Seaborn Displot
Чтобы добавить дополнительную переменную в вашу функцию displot()
в Seaborn, вы можете использовать параметр hue=
, чтобы передать столбец DataFrame, который разделит данные на несколько цветов.
Seaborn создаст цвет для каждого из различных уникальных значений в этом столбце. Если вы работаете с категориальными данными, Seaborn добавит один цвет для каждого уникального значения.
Добавление цветовых стилей вместо добавления цветовых измерений
В этом случае мы будем добавлять цвет, чтобы представить другое измерение данных. Если, вместо этого, вы хотели бы управлять стилем вашего графика, вы могли бы использовать параметр palette=
. На протяжении оставшейся части учебного пособия мы будем применять стиль, чтобы сделать стандартное оформление немного более эстетичным.
Давайте посмотрим, как мы можем использовать Seaborn для добавления дополнительных деталей к нашему графику, используя параметр hue=
В приведенном выше блоке кода мы использовали параметр hue='sex'
. Это означает, что мы хотим окрасить точки на нашем диаграмме рассеивания в разные цвета в зависимости от пола сотрудника. В результате получается следующее изображение:
Теперь мы видим, что визуализация данных стала намного яснее. Мы можем ясно видеть различия в данных. Вы можете узнать больше о том, как управлять цветом в гистограммах Seaborn, ознакомившись с моим полным руководством.
Объединение гистограммы с графиком KDE в Seaborn displot
С помощью функции displot()
в библиотеке Seaborn мы можем легко объединить создаваемую гистограмму с оценкой плотности ядра. Вместо создания отдельного объекта осей позволяет передать параметр kde=True
, который будет рисовать оценку прямо на гистограмме.
В приведенном выше блоке кода мы создали простую гистограмму с помощью функции displot()
, но инструктировали функцию отрисовать оценку плотности ядра. Это возвращает изображение ниже:
В следующем разделе вы узнаете, как построить бивариативное распределение с помощью функции displot в Seaborn.
Построение двумерного распределения в Seaborn Displot
По умолчанию Seaborn будет строить распределение одной переменной. Однако мы можем построить графики бивариантного распределения, используя функцию displot, просто передавая метки столбцов в параметры x=
и y=
В приведенном выше блоке кода мы не указали, какой тип графика хотим получить. Из-за этого по умолчанию в Seaborn используется гистограмма, которая отображает тепловую карту распределения по двум переменным.
Аналогичным образом, мы можем построить двумерную оценку плотности ядра. В этом случае нам нужно указать это, используя параметр kind=
В приведенном выше блоке кода мы добавили kind='kde'
, что строит оценку ядерной плотности. При построении двумерного распределения это возвращает изображение ниже:
Поскольку мы создаем объект уровня фигуры, мы также можем настроить визуализацию, добавив непосредственно коврик для данных. Это именно то, что вы узнаете в следующем разделе.
Добавление Rugplot в график Seaborn
Вместо того, чтобы вызывать функцию rugplot напрямую, Seaborn позволяет добавить коврик-график, используя аргумент rug=True
в функции displot. Это упрощает создание графика и делает код значительно чище.
В приведенном выше блоке кода мы передали rug=True
, что привело к отображению ковровой диаграммы на гистограмме, как показано ниже:
В следующем разделе вы узнаете, как создавать малые множества графиков в Seaborn.
Создание подмножеств графиков со строками и столбцами
Seaborn предоставляет значительную гибкость в создании подмножеств графиков (или подграфиков), распределяя данные по строкам и столбцам данных. Это позволяет генерировать "малые множества" графиков.
Вместо того чтобы разделять визуализацию с помощью цвета или стиля (хотя это тоже возможно), Seaborn разделит визуализацию на несколько подграфиков. Однако, вам не нужно явно определять подграфики, так как Seaborn автоматически разместит их на сетке FacetGrid.
Давайте теперь исследуем, как мы можем сначала добавлять столбцы визуализаций данных.
Добавление столбцов в график Seaborn
Чтобы создать колонки подграфиков, можно использовать параметр col=
. Данный параметр принимает либо метку столбца DataFrame Pandas, либо массив данных. Давайте разделим нашу визуализацию данных на колонки, основываясь на принадлежности к определенной акции:
В указанном выше коде мы задали библиотеке Seaborn создать колонки малых множеств по колонке 'day'
. Это означает, что Seaborn создаст индивидуальный подграфик в общей сетке FacetGrid для каждого уникального значения в колонке
Но что произойдет, если у нас будет много уникальных значений? Seaborn будет продолжать добавлять все больше и больше столбцов.
Из-за этого мы можем использовать параметр col_wrap=
, чтобы переносить графики на новую строку. Параметр принимает целое число, которое указывает, сколько столбцов должно быть, прежде чем графики будут перенесены на следующую строку.
Это приводит к следующей визуализации данных, где наши малые мультипликативы были обернуты вокруг второй колонки:
В следующем разделе вы узнаете, как добавлять дополнительные строки визуализаций.
Добавление строк в график Seaborn
Seaborn также позволяет добавлять строки с наборами небольших графиков. Это работает так же, как и добавление столбцов. Однако, вы также можете сочетать параметр rows=
с параметром col=
, чтобы создавать строки и столбцы с наборами небольших графиков
Давайте посмотрим, как это выглядит:
В приведенном выше блоке кода мы использовали row='sex'
и col='day'
, чтобы разделить малые множества на основе обеих этих колонок. Это приводит к следующей визуализации данных:
Давайте теперь рассмотрим, как мы можем настроить визуализацию данных, добавив заголовки и метки осей в наши графики.
Изменение названий и меток осей в отображении Seaborn
Добавление заголовков и описательных меток осей - отличный способ сделать визуализацию данных более информативной. Во многих случаях вашим читателям будет важно знать, что именно представляет собой точка данных и график. Поэтому важно понимать, как настраивать их в Seaborn.
Добавление заголовка к графику Seaborn
Чтобы добавить заголовок к displot()
в Seaborn, можно использовать метод fig.suptitle()
, доступный в Matplotlib. Для этого сначала потребуется настроить интервалы в объекте фигуры. Этот процесс может быть несколько эвристическим и требовать метода проб и ошибок.
Взгляните на блок кода ниже:
В приведенном выше блоке кода мы внесли ряд важных изменений:
Мы отфильтровали DataFrame, чтобы визуализацию было легче увидеть
Мы присвоили
displot
переменной,dist
Затем мы отрегулировали верхний отступ, используя
fig.subplots_adjust()
Затем мы применили к объекту фигуры метод
suptitle()
Это привело к следующей визуализации данных:
Точно так же мы можем настраивать заголовки каждого из создаваемых нами подграфиков. Давайте далее рассмотрим это подробнее.
Добавление заголовков к строкам и столбцам в отображении Seaborn
Seaborn предлагает невероятно гибкие опции форматирования для стилизации небольших многократных элементов, созданных с помощью параметров col=
и row=
В приведенном выше блоке кода мы использовали метод .set_titles()
, доступный для объектов FacetGrid. Этот метод позволяет использовать параметры row_template=
и col_template=
, которые дают возможность доступа к переменным col_name
и row_name
с использованием f-string форматирования
Это возвращает визуализацию данных ниже:
В следующем разделе вы узнаете, как настроить метки осей в displot
библиотеки Seaborn.
Изменение меток осей в графике Seaborn
По умолчанию Seaborn будет использовать метки столбцов в качестве меток осей в визуализации. Однако во многих случаях это может быть не самым описательным заголовком. Поскольку функция displot()
возвращает объект FacetGrid, мы можем использовать вспомогательные методы для решения этой проблемы, включая:
.set_xlabel()
который устанавливает метку оси X.set_ylabel()
который устанавливает метку оси Y.set_axis_labels()
который одновременно устанавливает метки осей X и Y
Давайте посмотрим, как это выглядит в Seaborn:
В приведенном выше блоке кода, ближе к концу, мы добавили две дополнительные строки кода для настройки подписей осей нашей визуализации данных. Это приводит к следующей визуализации данных:
В следующем разделе вы узнаете, как изменить размер диаграммы displot
в Seaborn.
Изменение размера графика Seaborn
Так как функция displot()
в Seaborn возвращает объект FacetGrid, мы можем легко изменить размер возвращаемого объекта фигуры. Для этого можно использовать два следующих параметра:
height=
который определяет высоту в дюймах каждой граниaspect=
который определяет соотношение сторон, так чтоheight * aspect
Давайте посмотрим, как можно изменить размер более простой визуализации данных в Seaborn:
В переданном коде указаны параметры height=5, aspect=1.6
. Это означает, что высота каждого элемента будет 5 дюймов, а ширина — 8 дюймов (5 * 1.6). В результате будет получена следующая визуализация данных:
Изменение размера вашей визуализации невероятно просто. Это может быть очень полезно при работе с данными, которые распределяются горизонтально или вертикально, при этом уменьшая количество пустого пространства.
Заключение
В этом уроке вы научились использовать функцию displot()
библиотеки Seaborn для создания визуализаций на уровне фигур, связанных с распределением данных. Эта функция позволяет легко создавать графики распределения, включая гистограммы и графики оценки плотности ядра, при этом предоставляя привычный и последовательный интерфейс.
Сначала вы научились создавать простые объекты для визуализации, затем перешли к более сложным примерам, добавляя дополнительные детали с помощью цвета. После этого вы научились создавать множественные визуализации, добавляя строки и столбцы графиков. Наконец, вы научились настраивать визуализации, изменяя заголовки, подписи осей и размер визуала.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, посетите ресурсы ниже:
Last updated