Seaborn jointplot() – Создание совместных графиков в Seaborn

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

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

  • Что такое совместные участки и когда их можно использовать

  • Как использовать функцию sns.jointplot() для создания информативных визуализаций

  • Как настроить совместные графики в Seaborn с помощью различных визуализаций, цветов, заголовков и т. д.

Оглавление

Что такое совместные графики?

Совместные графики позволяют изображать взаимосвязь между двумя переменными (также известную как бивариантная связь), одновременно исследуя распределение каждой из лежащих в основе переменных

Посмотрите на изображение ниже, которое показывает настраиваемую совместную диаграмму, созданную с помощью Seaborn:

Cutomizing a Seaborn jointplot with Titles, Axis Labels, and Legends
Пример совместного сюжета, созданного и настроенного с помощью Seaborn

На изображении выше мы видим точечную диаграмму, размещенную в центре нашей визуализации. То, что делает совместный график отличным, заключается в отображении распределений (в данном случае, используя графики KDE) по периметру диаграммы. Это позволяет лучше понять, как переменные распределяются вдоль осей x и y.

Давайте теперь рассмотрим функцию sns.jointplot() и различные параметры, которые она предлагает.

Понимание функции Seaborn jointplot()

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

# Понимание функции seaborn.jointplot()
seaborn.jointplot(data=None, *, x=None, y=None, hue=None, kind='scatter', height=6, ratio=5, space=0.2, dropna=False, xlim=None, ylim=None, color=None, palette=None, hue_order=None, hue_norm=None, marginal_ticks=False, joint_kws=None, marginal_kws=None, **kwargs)

В блоке кода выше вы можете увидеть определение функции. Мы видим, что существует большое количество параметров. Ниже рассмотрим некоторые важные из них:

  • data=, x=, и y= представляют DataFrame и метки столбцов, используемые для визуализации нашей бивариативной зависимости.

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

  • kind= определяет тип диаграммы, используемой для отображения бивариантного отношения

Давайте теперь начнем изучать создание совместных графиков в Seaborn.

Создание простого совместного графика с помощью Seaborn

Чтобы создать простой объединенный график в Seaborn, вам нужно передать только три переменные

  1. data= датафрейм, который вы хотите визуализировать,

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

Давайте рассмотрим, как мы можем использовать набор данных 'tips', который поставляется вместе с Seaborn:

# Создание примера совместного графика
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.jointplot(data=df, x='tip', y='total_bill', palette='Set2')
plt.show()

В приведенном выше блоке кода мы попросили Seaborn визуализировать взаимосвязь между столбцами 'tip' и total_bill'. Это привело к появлению ниже представленной визуализации данных:

Creating a Simple Joint Plot in Seaborn
Создание простого совместного графика в Seaborn

Давайте попробуем понять, что происходит на совместном сюжете выше:

  • Двумерная зависимость отображается с помощью диаграммы рассеяния, показывая взаимосвязь между двумя переменными

  • На правом краю графика расположена гистограмма, показывающая распределение переменной

  • Аналогично, в верхней части гистограмма показывает распределение переменной

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

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

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

# Добавление цветовой схемы к совместному графику Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.jointplot(data=df, x='tip', y='total_bill', palette='Set2', hue='sex')
plt.show()

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

Adding Additional Detail with Color in Seaborn JointPlots
Добавление дополнительных деталей с помощью цвета в Seaborn JointPlots

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

Для построения графиков оценки плотности ядра, вместо точечных диаграмм, в Seaborn jointplot можно передать kind='kde'. Это позволит построить оценку плотности ядра, с разделением по цветовой семантике.

Давайте посмотрим, как мы можем это сделать:

# Изменение типа совместного графика на график ядерной оценки плотности (KDE)
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.jointplot(data=df, x='tip', y='total_bill', hue='sex', palette='Set2', kind='kde')
plt.show()

В указанном выше блоке кода мы добавили только kind='kde', что указало Seaborn нарисовать график плотности распределения вместо диаграммы рассеяния. Это возвращает изображение, показанное ниже:

Creating KDE Charts in Seaborn jointplot
Создание диаграмм KDE в Seaborn Jointplot

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

Использование гистограмм в совместных графиках Сиборна

Диаграммы оценки плотности распределения, хотя и информативны, могут быть поняты не всеми, особенно пользователями без технической подготовки. В таких случаях добавление гистограммы может быть более подходящим решением. Для добавления гистограммы к совместной диаграмме в Seaborn, можно использовать параметр kind='hist', как показано ниже:

# Изменение типа совместного графика на гистограмму
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.jointplot(data=df, x='tip', y='total_bill', hue='sex', palette='Set2', kind='hist')
plt.show()

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

Creating Histograms in Seaborn jointplot
Создание гистограмм в Seaborn Jointplot

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

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

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

Чтобы построить шестиугольный график (hexplot) в функции совместного распределения Seaborn (jointplot), вы можете передать kind='hex' в функцию sns.jointplot(). Давайте посмотрим, как это сделать:

# Изменение типа совместного графика на гексагональный график
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.jointplot(data=df, x='tip', y='total_bill', palette='Set2', kind='hex')
plt.show()

В приведенном выше блоке кода мы использовали kind='hex', который указал Seaborn сгенерировать приведенный ниже график:

Creating Hexplots in Seaborn jointplot
Создание Hexplots в Seaborn Jointplot

Используя гексагональную диаграмму, данные больше напоминают точечную диаграмму. Это может быть менее сложно для понимания непрофессионалами.

Построение графика регрессии в Seaborn Joint Plots

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

Чтобы построить график регрессии, вы можете передать kind='reg' в функцию sns.pairplot(). Это показано в приведенном ниже блоке кода:

# Изменение типа совместного графика на график регрессии
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.jointplot(data=df, x='tip', y='total_bill', palette='Set2', kind='reg')
plt.show()

Используя регрессионный график в парном графике, будут изменены два ключевых элемента:

  1. К диаграмме рассеяния будет добавлена линия регрессии с доверительным интервалом

  2. На гистограммах, вдоль края графика, будет наложена линия KDE.

Приведенное действие возвращает изображение ниже:

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

Построение остаточного графика в Seaborn Joint Plots

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

Чтобы построить график остатков в совместном графике Seaborn, вы можете передать kind='resid' в функцию sns.pairplot(). Это показано в приведенном ниже блоке кода:

# Изменение типа совместного графика на график остатков
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.jointplot(data=df, x='tip', y='total_bill', palette='Set2', kind='resid')
plt.show()

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

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

Изменение размера совместного графика Seaborn

Чтобы изменить размер совместной диаграммы Seaborn, можно использовать аргумент height=. Фигура всегда будет квадратной, что означает, что вам не нужно беспокоиться о ширине размера.

По умолчанию Seaborn использует размер 6. Давайте посмотрим, как мы можем изменить его на размер 5:

# Изменение размера совместного графика Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

sns.jointplot(data=df, x='tip', y='total_bill', palette='Set2', hue='sex', height=5)
plt.show()

Изменив высоту нашего совместного графика до пяти, мы получаем изображение, показанное ниже (обратите внимание, что оно немного меньше, чем прежде):

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

Настройка совместного графика Seaborn с заголовком, метками осей и легендами

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

#Настройка совместного графика Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')

joint = sns.jointplot(data=df, x='tip', y='total_bill', palette='Set2', hue='sex')
joint.set_axis_labels('Tip Amount', 'Total Bill')
joint.fig.suptitle('Sample Joint Plot in Seaborn', weight='bold', size=18)
joint.fig.tight_layout()
plt.legend(loc='lower right')

plt.show()

В приведенном выше блоке кода мы настроили подписи осей, используя метод set_axis_labels(), который принимает подписи в виде строк. Затем мы добавили заголовок с помощью метода fig.suptitle(), так как рисуем объект на уровне фигуры. Наконец, мы разместили легенду в нижнем правом углу. Это дает изображение ниже:

Изображение выше теперь выглядит намного чётче. Это может быть важной задачей при подготовке визуализаций данных к презентации.

Заключение

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

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

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

Last updated