Seaborn relplot – Создание точечных и линейных графиков
Last updated
Last updated
В этом учебнике вы узнаете, как создавать реляционные графики Seaborn с использованием функции sns.relplot(). Реляционные графики показывают связь между двумя или более переменными. Например, вы можете использовать Seaborn для , чтобы показать связь между непрерывными переменными. Аналогично, вы можете захотеть создать диаграммы рассеяния.
Seaborn предоставляет специальные функции для обоих этих видов визуализаций. Так зачем же использовать функцию relplot()? Функция Seaborn relplot()
является функцией на уровне фигуры, а не на уровне осей. Это открывает разные возможности в плане того, как вы можете компоновать свои визуализации.
К концу этого урока вы изучите следующее:
Что такое функция Seaborn relplot()
Когда следует использовать функцию Seaborn relplot()
вместо sns.lineplot()
и sns.scatterplot()
Как построить несколько диаграмм рассеяния и линейных графиков с помощью функции уровня рисунка sns.relplot()
Как настроить заголовки, цвета и многое другое
Оглавление
Функция Seaborn relplot() используется для создания реляционных графиков на уровне фигуры на Seaborn FacetGrid. Вы можете настроить тип создаваемой визуализации, используя параметр kind=
. Функция предоставляет доступ к следующим функциям на уровне осей:
Seaborn scatterplot()
для создания диаграмм рассеяния (по умолчанию)
Seaborn lineplot()
для создания линейных
Функция relplot()
из Seaborn предоставляет фигуративный интерфейс для создания реляционных графиков. Это означает, что функция позволяет привязываться к фигуре, а не к объекту оси, открывая больше возможностей.
Давайте посмотрим, как написана функция:
Функция имеет очень похожий интерфейс с другими функциями для построения реляционных графиков. Давайте рассмотрим некоторые ключевые параметры:
data=
предоставляет данные для построения графика через DataFrame
x=
и y=
задают переменные для отображения на осях x и y соответственно.
hue=
добавляет дополнительную переменную для отображения через цветовую схему
Кроме того, функция предлагает дополнительные параметры, доступные только в функции relplot()
. Давайте изучим их:
Аргумент kind=
определяет, какой тип графика создать. По умолчанию создается точечная диаграмма, используя ключевое слово scatter
.
row=
позволяет разбить ваш набор данных на дополнительные строки визуализаций.
col=
позволяет разбить ваш набор данных на дополнительные столбцы визуализаций.
height=
и aspect=
управляют размером вашей визуализации данных.
Теперь, когда у вас есть четкое представление о возможностях, давайте подробно рассмотрим, как мы можем использовать функцию для создания полезных визуализаций данных.
Давайте посмотрим, как мы можем прочитать набор данных и исследовать его первые пять строк:
Мы можем увидеть, что с помощью метода .head()
можно вывести первые пять строк набора данных. У нас есть четыре столбца данных, охватывающие дату, название акции, объем торгов и цену открытия. Давайте посмотрим, как мы можем узнать больше об этом наборе данных, используя функцию relplot()
из библиотеки Seaborn.
По умолчанию функция Seaborn relplot()
создаст диаграмму рассеяния. Чтобы создать самую простую визуализацию, мы можем просто передать следующие параметры:
data=
для передачи нашего DataFrame
x=
и y=
для передачи меток столбцов, которые мы хотим исследовать на диаграмме рассеяния
Давайте посмотрим, как выглядит:
В кодовом блоке выше мы передали наш DataFrame df
, а также метки столбцов 'Open'
и 'Volume'
. Это вернуло следующую визуализацию:
Мы видим, что, поскольку мы строим график двух переменных, для нас была создана диаграмма рассеяния. Этот график позволяет нам исследовать взаимосвязь между двумя переменными, определяя, как они взаимодействуют.
Но что, если вы работаете с непрерывными данными, например, с датами? В таких случаях имеет больше смысла отображать данные в виде линий. Давайте исследуем это в следующем разделе.
В то время как функция Seaborn relplot()
по умолчанию создает точечные диаграммы, мы также можем создавать линейные графики, передавая kind='line'
. Это особенно полезно при работе с непрерывными данными, такими как даты. Поскольку в нашем наборе данных доступна переменная даты, давайте посмотрим, как мы можем это использовать:
В приведенном выше блоке кода мы добавили один дополнительный именованный аргумент: kind=
. Это позволило нам создать совершенно другую визуализацию данных, как показано ниже.
Функция relplot()
фактически использует функцию lineplot()
, поэтому их поведение одинаково. По умолчанию функция агрегирует данные в единичный маркер. Поскольку у нас есть три разные точки данных для каждой даты, Seaborn вернёт среднее значение каждой точки данных.
Этот процесс также требует понимания того, как изменяются данные. Именно поэтому Seaborn добавляет к визуализации полоски ошибки. Давайте изучим эти полоски ошибки более подробно.
Когда данные агрегируются в relplot Seaborn, Seaborn добавляет полосу ошибок к визуализации. В приведенном выше примере мы создали линейный график, который возвращал среднее значение для каждого дня (поскольку у нас было три точки данных на каждый день).
По умолчанию Seaborn использует метод бутстреппинга, чтобы получить 95%-й доверительный интервал, в пределах которого новые данные окажутся в пределах диапазона ошибки.
Это означает, что Seaborn будет использовать выборку с возвратом для вычисления среднего и повторит этот процесс несколько раз. По умолчанию это повторяется тысячу раз для каждого значения на оси X
Генерируется интервал доверия, в пределах которого новые значения с 95% вероятностью будут находиться. Однако у вас также есть возможность изменить как доверительный интервал, так и количество итераций бутстрапа, выполняемых Seaborn.
Мы также можем изменить процент, используемый в нашем доверительном интервале, передав кортеж, содержащий ('ci', n)
, где n представляет процент, который мы хотим использовать. Давайте изменим наш диапазон, чтобы показать доверительный интервал в 50%.
Визуализация возвращается следующая. Обратите внимание, что диапазон теперь уже, так как ошибка диапазона теперь намного менее неопределенная.
Возможно, вы также заметите, что параметр errorbar=
не является частью определения функции relplot()
. Однако он является частью функции lineplot()
. Seaborn позволяет использовать любые ключевые аргументы из этой функции при построении линейного графика.
А что если мы захотим изменить тип расчета ошибки? Seaborn также упрощает эту задачу!
Seaborn принимает следующие способы вычисления погрешностей: 'ci', 'pi', 'se' или 'sd'
, которые обозначают следующие расчёты:
'ci'
: доверительный интервал, который вычисляет непараметрическую неопределенность
'pi'
: процентильный интервал, который рассчитывает непараметрическое расхождение.
'se'
: стандартная ошибка, которая вычисляет параметрическую неопределенность
'sd'
: стандартное отклонение, которое вычисляет параметрическое распределение
Давайте теперь вернемся к настройке нашего реляционного графика, добавив цвета, формы
Добавление дополнительных деталей к нашим графикам в Seaborn можно произвести с помощью цвета, форм и размеров. Все три эти опции позволяют добавить дополнительные измерения (или столбцы данных) к вашей визуализации. Это означает, что, хотя наши графики останутся двухмерными, мы фактически можем построить график с дополнительными измерениями.
Мы можем добавить это, используя следующие параметры:
hue=
используется для добавления дополнительных параметров в настройки цвета.
size=
используется для изменения размера формы с использованием данных из дополнительного столбца,
style=
используется для изменения того, как значения отображаются с использованием стилей маркеров или линий.
Давайте рассмотрим, как добавить дополнительные уровни детализации с помощью цвета.
Чтобы добавить дополнительную переменную в ваш Seaborn relplot()
, вы можете использовать параметр hue=
, чтобы передать столбец DataFrame, который разобьет данные на несколько цветов.
Seaborn создаст цвет для каждого уникального значения в этом столбце. Если вы работаете с категориальными данными, Seaborn добавит один цвет для каждого уникального значения. Если же вы работаете с непрерывными данными, Seaborn будет различно оттенять точки.
В данном случае мы добавим цвет, чтобы отобразить другое измерение данных. Если вы хотите изменить стиль вашего графика, используйте параметр palette=
. В оставшейся части руководства мы применим стиль, чтобы сделать стандартное оформление более эстетичным.
Давайте посмотрим, как мы можем использовать библиотеку Seaborn для добавления большего количества деталей в наш график с помощью параметра hue=
В приведенном выше блоке кода мы указали hue='Name'
. Это означает, что мы хотим раскрасить точки на нашем диаграмме рассеивания по-разному в зависимости от того, к какой акции принадлежит точка данных. (Примечание: мы также применили палитру, хотя это исключительно для стилизации графика). Это возвращает следующее изображение:
Теперь визуализация данных стала намного яснее. Мы четко видим три разных кластера данных, что позволяет нам лучше понять закономерности в данных.
Одна важная вещь, которую следует учитывать, это то, что добавление цвета в нашу визуализацию может сделать данные недоступными для людей с дальтонизмом. Аналогично, если мы распечатаем визуализацию на черно-белом принтере, смысл может быть утерян.
Благодаря этому, мы также можем изменить форму каждой точки данных, используя другой маркер. Давайте посмотрим, как мы можем использовать Seaborn для изменения форм:
В приведённом выше коде мы передали столбец 'Name'
в параметры hue=
и style=
. Это означает, что столбец представлен как стилем маркера, так и цветом.
Если бы мы создавали линейные графики, это изменило бы стиль линии (например, пунктирная, штриховая, сплошная и т. д.). Поскольку функция relplot()
может использоваться для создания как точечной диаграммы, так и линейного графика, важно понимать, чего ожидать.
В этом случае мы возвращаем следующее изображение:
В следующем разделе давайте рассмотрим, как мы можем лучше понять распределение, используя размер маркера в качестве переменной.
Наконец, мы можем добавить больше деталей в реляционный график, используя параметр size=
. Этот параметр позволяет передать другой столбец, который будет использован для определения размера маркеров.
Это действие приводит к следующей визуализации. Мы видим, что цены открытия были выше для более поздних дат в году. Напротив, они были ниже для более ранних дат в году.
Теперь давайте посмотрим, как мы можем использовать эту функцию на уровне фрагмента для лёгкого создания подграфиков с помощью строк и столбцов визуализаций.
Seaborn предоставляет значительную гибкость в создании подмножеств графиков (или подграфиков), распределяя данные по строкам и столбцам. Это позволяет создавать "малые множества" графиков.
Вместо разделения визуализации с помощью цвета или стиля (хотя вы можете сделать и это), Seaborn разделяет визуализацию на несколько подграфиков. Однако, вместо необходимости явно задавать подграфики, Seaborn нанесет их на сетку FacetGrid
Давайте теперь рассмотрим, как мы можем сначала добавить столбцы с визуализациями
Чтобы создать столбцы подграфиков, мы можем использовать параметр col=
. Этот параметр принимает либо метку столбца DataFrame Pandas, либо массив данных. Разделим нашу визуализацию данных на столбцы в зависимости от того, к каким акциям они относятся:
В кодовом блоке выше мы указали Seaborn создать колонки малых множеств с использованием столбца 'Name'
. Это означает, что Seaborn создаст отдельный подграф в более широкой FacetGrid для каждого уникального значения в столбце 'Name'
Но что происходит, когда у нас много уникальных значений? Представьте, что мы создали столбец, в котором хранится каждый отдельный месяц. Seaborn будет продолжать добавлять новые столбцы. В этом случае Seaborn создаст двенадцать разных столбцов! Однако такой подход становится очень трудным для восприятия.
Из-за этого мы можем использовать параметр col_wrap=
для переноса столбцов. Параметр принимает целое число, которое указывает, сколько столбцов должно быть, прежде чем диаграммы будут перенесены на другую строку.
Это возвращает следующую визуализацию данных, где наши малые множества расположены вокруг второго столбца.
В следующем разделе вы узнаете, как добавить дополнительные строки визуализаций.
Seaborn также позволяет передавать строки небольших множеств. Это работает так же, как добавление столбцов. Однако вы также можете комбинировать параметр rows=
с параметром col=
, чтобы создать строки и столбцы небольших множеств.
Посмотрим, как это выглядит:
Во фрагменте кода выше мы передали row='Quarter'
и col='Name'
, чтобы разделить небольшие мультипликаторы на основе этих столбцов. Это возвращает следующую визуализацию:
Давайте теперь рассмотрим, как можно настроить визуализацию данных, добавив заголовки и метки осей на наши графики.
Добавление заголовков и описательных меток осей — отличный способ сделать вашу визуализацию данных более информативной. Во многих случаях читателям будет важно знать, что именно представляют собой точка данных и график. Поэтому важно понять, как настраивать их в Seaborn.
Чтобы добавить заголовок к графику Seaborn с помощью метода relplot()
, можно использовать метод fig.suptitle()
из Matplotlib. Для этого сначала нужно будет отрегулировать интервалы нашего объекта фигуры. Этот процесс может быть немного эвристическим и требовать несколько попыток.
Нижеприведенным блоком кода показаны:
В приведённом выше фрагменте кода мы внесли ряд важных изменений:
Мы отфильтровали DataFrame, чтобы визуализация была более легко читаемой.
Мы присвоили переменной scatter
значение функции
Затем мы настроили верхний отступ с помощью fig.subplots_adjust()
Затем мы добавили suptitle()
к объекту фигуры
Этот возвратил следующую визуализацию данных:
Аналогично, мы можем настроить заголовки каждого из подграфиков, которые мы создаем. Давайте посмотрим, как это сделать.
Seaborn предоставляет невероятно гибкие параметры форматирования для стилизации маленьких множеств, созданных с помощью параметров col=
и row=
.
В кодовом блоке выше мы использовали метод .set_titles()
, доступный объектам FacetGrid. Этот метод позволяет использовать параметры row_template=
и col_template=
, которые дают доступ к переменным col_name
и row_name
в синтаксисе, похожем на форматирование f
Это возвращает визуализацию данных ниже:
В следующем разделе вы узнаете, как настраивать метки осей в relplot
библиотеки Seaborn.
По умолчанию, Seaborn использует названия столбцов как подписи осей в визуализации. Однако во многих случаях это не очень описательное название. Поскольку функция relplot()
возвращает объект FacetGrid, мы можем использовать вспомогательные методы для решения этой проблемы,
.set_xlabel()
, который устанавливает метку оси x
.set_ylabel()
, который устанавливает метку оси y
.set_axis_labels()
, который устанавливает метки обеих осей: x и y
Давайте посмотрим, как это выглядит в Seaborn:
Во фрагменте кода выше, мы добавили две дополнительные строки кода к концу, чтобы настроить метки осей нашего визуализационного данных. Это возвращает следующую визуализацию данных:
В следующем разделе вы узнаете, как изменить размер relplot
в Seaborn
Поскольку функция Seaborn relplot()
возвращает объект FacetGrid, мы можем легко изменить размер возвращаемой фигуры. Для этого можно использовать два следующих параметра:
height=
определяет высоту каждой грани в дюймах
aspect=
который определяет соотношение сторон так, что ширина равна height * aspect
Давайте посмотрим, как изменить размер простой визуализации данных в Seaborn:
В коде выше мы указали height=5, aspect=1.6
. Это означает, что высота фасета будет 5 дюймов, а ширина — 8 дюймов (5 * 1.6). Это возвращает следующее визуальное представление данных:
Изменить размер визуализации невероятно просто. Это может быть очень полезно при работе с данными, которые распространяются по горизонтали или вертикали, уменьшая пустое пространство.
В этом уроке вы узнали, как использовать функцию relplot()
из библиотеки Seaborn для создания визуализаций взаимосвязей на уровне фигуры. Эта функция позволяет легко создавать диаграммы рассеяния и линейные графики, обеспечивая знакомый и согласованный интерфейс.
Сначала вы научились создавать простые объекты на уровне фигуры, затем перешли к более сложным примерам, добавляя дополнительные детали с помощью цвета, стиля и размера. Далее вы научились создавать малые множества, добавляя ряды и столбцы графиков. Наконец, вы научились настраивать визуализации, изменяя заголовки, метки осей и размер визуала.
Чтобы узнать больше о связанных темах, ознакомьтесь с ресурсами ниже
Seaborn lineplot – Create Line Plots with Seaborn
Seaborn lineplot – Создание линейных графиков с помощью Seaborn
Чтобы начать, давайте загрузим образец набора данных, который мы будем использовать на протяжении всего этого учебника. Набор данных доступен на и содержит информацию о акциях Microsoft, Apple и Google за 2020 год. Мы можем загрузить набор данных, используя Pandas. Это особенно полезно благодаря тесной интеграции Seaborn с библиотекой.
В приведенном ниже примере мы так, чтобы отображались только записи для Apple. Мы также отображаем дату по оси x, что может не иметь большого смысла. Однако, пример покажет, как изменяется размер точек.
Давайте создадим столбец, который и обернём малые множественные: