Как изменить положение легенды в Seaborn


Чтобы изменить положение легенды на морском графике, вы можете использовать команду plt.legend() .

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

plt.legend(loc='upper right')

Расположение по умолчанию — «лучшее» — именно здесь Matplotlib автоматически находит место для легенды в зависимости от того, где он избегает охвата каких-либо точек данных.

Однако вы можете указать любое из следующих местоположений легенды:

  • верхний правый
  • верхний левый
  • нижний левый
  • Нижний правый
  • Правильно
  • центр слева
  • центр справа
  • нижний центр
  • верхний центр
  • центр

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

plt.legend(bbox_to_anchor=( 1.05 , 1 ), loc='upper left', borderaxespad= 0 )

В следующих примерах показано, как использовать каждый из этих методов на практике.

Пример 1: изменение положения легенды внутри графика Seaborn

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

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

#create fake data
df = pd.DataFrame({'points': [25, 12, 15, 14, 19, 23, 25, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B']})

#create scatterplot
sns.scatterplot(data=df, x='points', y='assists', hue='team')

#place legend in center right of plot
plt.legend(loc='center right', title='Team') 

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

#create scatterplot
sns.scatterplot(data=df, x='points', y='assists', hue='team')

#place legend in upper left of plot
plt.legend(loc='upper left', title='Team') 

Пример 2: изменить положение легенды за пределами участка Seaborn

Чтобы разместить легенду за пределами морского сюжета, мы можем использовать аргумент bbox_to_anchor() .

Например, вот как разместить легенду за пределами верхнего правого угла графика:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

#create fake data
df = pd.DataFrame({'points': [25, 12, 15, 14, 19, 23, 25, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B']})

#create scatterplot
sns.scatterplot(data=df, x='points', y='assists', hue='team')

#place legend outside top right corner of plot
plt.legend(bbox_to_anchor=( 1.02 , 1 ), loc='upper left', borderaxespad= 0 ) 

А вот как разместить легенду за пределами нижнего правого угла графика:

#create scatterplot
sns.scatterplot(data=df, x='points', y='assists', hue='team')

#place legend outside bottom right corner of plot
plt.legend(bbox_to_anchor=( 1.02 , 0.15 ), loc='upper left', borderaxespad= 0 ) 

Подробное объяснение аргумента bbox_to_anchor() см. в документации по matplotlib.

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

Как настроить размер рисунка на графике Seaborn
Как изменить метки осей на графике Seaborn
Как изменить размер шрифта легенды на графике Seaborn