Существует постоянное расстояние между рамкой легенды и осями по умолчанию.Это устанавливается с помощью параметра borderaxespad
.По умолчанию это значение rc rcParams["legend.borderaxespad"]
, которое обычно устанавливается на 0.5
(в единицах размера шрифта).
Так что, по сути, вы получаете поведение, которое вы запрашиваете бесплатно.Имейте в виду, однако, что вы должны указать loc
в углу легенды, из которой должен быть взят этот отступ.Т.е.
import numpy as np
import matplotlib.pyplot as plt
for figsize in [(5,4), (5,9)]:
fig, ax = plt.subplots(figsize=figsize)
ax.plot([1,2,3], label="label")
ax.legend(loc="lower left", bbox_to_anchor=(0,1))
plt.show()

Более подробные объяснения о том, как расположить легенду вне осей, см. Как поместить легенду изучасток .Также актуально: Как указать положение легенды в matplotlib в координатах графа