Рассмотрим следующий пример:
import matplotlib.pyplot as plt
from matplotlib import gridspec
import numpy as np
x = np.linspace(0, 10, 100)
y = 2*x + 0.5
plt.figure(figsize=(6, 4))
gs = gridspec.GridSpec(2, 2)
plt.subplot(gs[0, 0])
plt.plot(x, y, "o")
plt.subplot(gs[0, 1])
plt.plot(x, y, "o")
plt.subplot(gs[1, :])
plt.plot(x, y, "o", label="test")
plt.legend(loc="upper center", bbox_to_anchor=(0.5, 2.7))
plt.subplot(gs[2, :])
plt.plot(x, y, "o")
plt.tight_layout()
plt.show()
Когда я удаляю bbox_to_anchor
из plt.legend
, приведенный выше код должен выглядеть примерно так:

Но когда я размещаю легенду за пределами субплота, используя bbox_to_anchor
(как в коде выше), субплоты сдавливаются:

Очевидно, что это нежелательно.Кажется, существует конфликт между bbox_to_anchor
и tight_layout()
(если вы удалите любой из кода выше, получится что-то разумное).Есть ли что-то, что я делаю не так, или это известное / ожидаемое поведение?
Эта проблема воспроизводится в различных бэкэндах.Я не получаю никаких предупреждений или ошибок.Я использую Matplotlib версии 2.2.2
.