Настройка расположения легенд Seaborn, меток, текста и т.д.
Seaborn — это библиотека Python, позволяющая создавать статистические визуализации. В основе она использует Matplotlib и имеет значительную интеграцию с библиотекой анализа данных Pandas. Легенда в Seaborn — это поле, которое предоставляет описания различных атрибутов графика, включая информацию о том, какие цвета соответствуют каким атрибутам.
В этом руководстве вы научитесь создавать и настраивать легенды в Seaborn, включая их позиционирование, размер, подписи и заголовок. Поскольку Seaborn использует Matplotlib в своей основе, у вас есть много возможностей для настройки легенды.
К концу этого урока вы научитесь следующему:
Как добавить или скрыть легенду в Seaborn
Как переместить легенду в Сиборне в разные позиции, в том числе и снаружи
Как изменить название и метки в легенде Seaborn
Как изменить размер шрифта заголовков и надписей легенд
Как настроить дополнительные свойства, включая добавление тени к легенде
Оглавление
Как можно настроить легенды в Seaborn
Чтобы настроить легенды в Seaborn, вы можете использовать функцию .legend(), доступную в Matplotlib pyplot. В общем случае, вызов функции выглядит следующим образом:
import seaborn as sns
import matplotlib.pyplot as plt
...
plt.legend()
Когда вы вызываете функцию, вы можете передать различные параметры, которые позволяют настроить легенду. Давайте сначала рассмотрим, как изменить расположение легенды.
Как переместить локацию легенды в Seaborn
Чтобы переместить расположение легенды в Seaborn, используйте аргумент loc=
в функции plt.legend(). Аргумент принимает как именованное расположение, так и пронумерованное расположение. В таблице ниже представлены различные доступные расположения, как именованные, так и пронумерованные:
'best'
0
'upper right'
1
'upper left'
2
‘lower left'
3
'lower right'
4
'right'
5
'center left'
6
'center right'
7
'lower center'
8
'upper center'
9
'center'
10
Давайте начнем с именованных местоположений, так как они более интуитивны. По умолчанию Seaborn будет использовать расположение 'best'
или 0
. Оно определит лучшее место для легенды в зависимости от того, где находятся точки данных на графике.
# Перемещение легенды Seaborn с использованием именованных местоположений
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(loc='upper center')
plt.show()
В приведенном ниже примере мы загрузили набор данных 'tips'
, доступный в библиотеке Seaborn, и создали диаграмму рассеяния Seaborn с этими данными. Затем мы использовали функцию plt.legend()
и передали в нее 'upper center'
в параметр loc=
. Это вернуло следующую визуализацию:

Мы видим, что расположение легенды изменилось на верхнее среднее положение. Аналогично использованию именованных позиций, мы также можем использовать пронумерованные позиции. Давайте посмотрим, как это работает.
# Перемещение легенды Seaborn с использованием номеров позиций
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(loc=1)
plt.show()
Мы видим, что при передаче значения 1
для параметра расположения, место размещения легенды переместилось в правый верхний угол. Также видно, что легенда теперь закрывает одну из точек данных. Поэтому необходимо учитывать, где размещать легенду.
Как переместить легенду наружу в Seaborn
Чтобы переместить легенду за пределы графика в Seaborn, вы можете использовать параметры loc= и bbox_to_anchor=. Параметр bbox_to_anchor позволяет указать, где именно должна быть размещена легенда относительно самого графика.
Давайте рассмотрим пример того, как это работает:
# Перемещение легенды Seaborn за пределы области рисунка
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(loc='upper left', bbox_to_anchor=(1, 1))
plt.show()
Но как это работает? Когда вы используете оба параметра loc=
и bbox_to_anchor=
, параметр loc=
указывает, где должна быть привязана легенда. В этом случае, указывая верхний левый угол, легенда привязывается к верхней левой точке. Затем, передавая кортеж из (1, 1)
, местоположение изменяется так, что ограничивающая рамка (верхний левый угол легенды) находится в верхнем правом углу самого графика.
Чтобы разместить легенду в левом верхнем углу за пределами графика в Seaborn, вы можете использовать следующий код:
# Перемещение легенды Seaborn за пределы области рисунка
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(loc='lower left', bbox_to_anchor=(0, 1))
plt.show()
Мы видим, что для привязки местоположения мы используем 'нижний левый'
. Это означает, что любое местоположение легенды, которое мы передаем в параметр bbox_to_anchor=
, будет использовать нижний левый угол в качестве привязки. Передавая кортеж (0, 1)
, мы указываем Seaborn, что хотим, чтобы позиция была привязана к крайней левой части (x = 0) графика и находилась в верхней части графика (y =1).
В следующем разделе вы узнаете, как полностью удалить легенду
Как удалить легенду в Seaborn
Чтобы удалить легенду в Seaborn, мы можем передать аргумент legend=False
в саму функцию построения графика. В этом случае нам не нужно использовать функцию plt.legend()
. Этот параметр доступен в различных функциях построения графиков в Seaborn. Посмотрим, как это выглядит:
# Удаление легенды из визуализации Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day', legend=False)
plt.show()
Выполнив этот код, мы удаляем легенду из нашего графика Seaborn.
В следующем разделе вы узнаете, как изменить подписи легенды в Seaborn.
Как изменить метки легенд в Seaborn
Чтобы изменить подписи легенды в графике Seaborn, используйте параметр labels=
в функции plt.legend()
. Это позволяет передать список значений, которые будут представлять различные подписи для легенды.
В нашем примере на графике легенда показывает дни в сокращённом виде. Возможно, мы захотим развернуть их до полного названия. Для этого мы можем передать labels=['Thursday', 'Friday', 'Saturday', 'Sunday']
в функцию plt.legend()
.
# Изменение меток легенды Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(labels=['Thursday', 'Friday', 'Saturday', 'Sunday'])
plt.show()
В следующем разделе вы узнаете, как добавить заголовок к легенде в Seaborn.
Как добавить название к легенде в Seaborn
Добавление заголовка к легенде может помочь лучше описать данные, представленные на вашем графике. Например, в то время как наша текущая легенда показывает день недели, это можно сделать более понятным, добавив заголовок.
Для добавления заголовка к легенде графика Seaborn, можно использовать параметр title=
в функции plt.legend()
. Этот параметр принимает строку, что позволяет настроить заголовок. Давайте посмотрим, как это выглядит:
# Добавление заголовка легенды Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(title='Day of Week')
plt.show()
В приведенном выше коде мы указали заголовок 'Day of Week'
для нашей легенды. Давайте посмотрим, как это выглядит в Seaborn:
Мы также можем изменить размер шрифта в легенде Seaborn – это вы узнаете в следующем разделе.
Как изменить размер шрифта в легенде в Seaborn
В этом разделе вы узнаете, как изменить размер шрифта в легенде Seaborn. Это можно сделать двумя разными способами:
fontsize=
управляет размером текста в легендеtitle_fontsize=
управляет размером шрифта заголовка в легенде.
Seaborn позволяет использовать либо именованные размеры, как показано в примере ниже, либо фактические размеры в виде чисел, обозначающих размер шрифта в пикселях.
Посмотрим, как можно настроить размер шрифта в легенде
# Изменение размера шрифта текста в легенде Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(
labels=['Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
fontsize='large',
title='День недели',
title_fontsize='x-large'
)
plt.show()
Видно, что изменены как размер заголовка легенды, так и сама легенда.
Как убрать границу с легенды в Seaborn
Чтобы удалить границу из легенды в Seaborn, вы можете использовать аргумент frameon=False
. Это указывает Seaborn убрать границу из легенды на графике. Это может быть полезно, если вы хотите сделать график более чистым и аккуратным.
Посмотрим, как выглядит этот код:
# Удаление квадрата из легенды Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(frameon=False)
plt.show()
Мы видим, что рамка легенды была удалена. В следующем разделе вы узнаете, как изменить и добавить столбцы в легенду в Seaborn.
Как изменить столбцы в легенде в Seaborn
Добавление столбцов в легенду в Seaborn можно выполнить с помощью параметра ncols=
в функции plt.legend()
. Разбиение легенды на столбцы может быть отличным способом отображения легенды в горизонтальном формате.
Давайте посмотрим, как это выглядит на Python:
# Добавление столбцов в легенде Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(ncol=2)
plt.show()
В приведённом выше коде мы разделили легенду на два столбца. Это позволяет разместить два элемента в каждом столбце. Если бы мы передали 4, то элементы отображались бы в строке.
Мы видим, что, используя два столбца, элементы легенды разделены на столбцы.
Как изменить положение маркера в легенде в Seaborn
В некоторых случаях вы можете захотеть разместить маркер справа от метки легенды. По умолчанию маркеры находятся слева. Чтобы сделать это, вы можете использовать параметр markerfirst=
в функции plt.legend()
. По умолчанию он установлен в True
.
Давайте посмотрим, как использовать Seaborn, чтобы маркеры располагались справа от метки:
# Перемещение маркеров вперед в легенде Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(markerfirst=False)
plt.show()
В разделе ниже вы узнаете, как добавить тень к легенде в Seaborn.
Как добавить тень к легенде в Seaborn
Добавление тени к легенде может помочь добавить объем. Чтобы сделать это в Seaborn, вы можете использовать параметр shadow=
в функции plt.legend()
. Параметр принимает булевое значение и по умолчанию равен False
.
Давайте посмотрим, как мы можем добавить тень к нашей легенде, передав shadow=True
в наш граф
# Добавление теневого эффекта в легенду Seaborn
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.legend(shadow=True)
plt.show()
Добавив shadow=True
в нашу функцию, мы видим, что к легенде добавлена тень.
Часто задаваемые вопросы
Заключение
В этом уроке вы узнали, как добавлять и настраивать легенды в визуализациях данных Seaborn. Умение добавлять и настраивать легенды — это важный навык, который может значительно упростить понимание ваших визуализаций. Так как Seaborn использует Matplotlib в своей основе, вы можете в значительной степени настраивать свои визуализации.
В течение этого руководства вы разобрали множество различных случаев, как можно настроить легенды в Seaborn, например, изменяя их положение, подписи и размер.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, воспользуйтесь следующими ресурсами:
Как установить Seaborn в Python (Исправление: нет модуля с именем seaborn)
Названия и метки осей Seaborn: добавление и настройка
Seaborn despine: как работать с шипами и удалять их
Last updated