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


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

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

plt.legend(loc='upper left')

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

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

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

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

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

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

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

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

import pandas as pd
import matplotlib.pyplot as plt

#create data
df = pd.DataFrame({'points': [11, 17, 16, 18, 22, 25, 26, 24, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4, 8]})

#add lines to plot
plt.plot(df['points'], label='Points', color='green')
plt.plot(df['assists'], label='Assists', color='steelblue')

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

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

import pandas as pd
import matplotlib.pyplot as plt

#create data
df = pd.DataFrame({'points': [11, 17, 16, 18, 22, 25, 26, 24, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4, 8]})

#add lines to plot
plt.plot(df['points'], label='Points', color='green')
plt.plot(df['assists'], label='Assists', color='steelblue')

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

Пример 2: изменить положение легенды за пределами графика Matplotlib

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

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

import pandas as pd
import matplotlib.pyplot as plt

#create data
df = pd.DataFrame({'points': [11, 17, 16, 18, 22, 25, 26, 24, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4, 8]})

#add lines to plot
plt.plot(df['points'], label='Points', color='green')
plt.plot(df['assists'], label='Assists', color='steelblue')

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

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

import pandas as pd
import matplotlib.pyplot as plt

#create data
df = pd.DataFrame({'points': [11, 17, 16, 18, 22, 25, 26, 24, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4, 8]})

#add lines to plot
plt.plot(df['points'], label='Points', color='green')
plt.plot(df['assists'], label='Assists', color='steelblue')

#place legend in center right of plot
plt.legend(bbox_to_anchor=( 1.02 , 0.1 ), loc='upper left', borderaxespad= 0 ) 

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

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

В следующих руководствах объясняется, как выполнять другие распространенные операции в Matplotlib:

Как изменить размер шрифта легенды в Matplotlib
Как добавить заголовок в легенду в Matplotlib
Как настроить позицию заголовка в Matplotlib
Как настроить положение метки оси в Matplotlib