Код: Выделить всё
import matplotlib.pyplot as plt
def set_legend(ax, item_count, title=None):
legend = ax.legend(
title=title,
loc='upper center',
bbox_to_anchor=(0.5, -0.1),
ncol=item_count,
frameon=False,
prop={'size': 6}
)
legend.get_title().set_fontsize('8')
return ax
def generate_plot_base():
fig, ax = plt.subplots(1, 1, figsize=(6, 2.71), tight_layout={'pad': 0})
return ax
ax = generate_plot_base()
ax.plot([], [], label='Label 1', color='blue') # Toy labels
ax.plot([], [], label='Label 2', color='orange')
ax.plot([], [], label='Label 3', color='green')
ax = set_legend(ax, 3, title="Example Legend") # if you comment out the x-axis goes down
plt.show()
но, когда я добавляю легенду без заголовка, нижняя часть часть сюжета расширяется, чтобы вместить легенду. если я добавляю заголовок легенды, он расширяется больше (или, если я использую slim_layout, он остается прежним, но ось X перемещается вверх внутри графика).
вместо этого я хочу добавить дополнительное пространство между нижней частью и осью X, так что если я добавлю легенду (с заголовком легенды или без него), как площадь графика (размеры в пикселях), так и расположение оси останутся прежними, поскольку свободной площади уже достаточно.
Я пробовал экспериментировать с Tight_layout и subplot_adjust, но не смог добиться того поведения, которое описываю здесь.
Подробнее здесь: https://stackoverflow.com/questions/792 ... s-position