Чтобы изменить положение легенды в 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