Как сделать обе вещи вместе: отрегулировать расстояние между участками и разместить легенду за пределами сюжета? - PullRequest
1 голос
/ 23 марта 2019

У меня есть 9 сюжетов matplotlib, расположенных в сетке.Я пытаюсь сделать две простые вещи: (1) отрегулировать расстояние между участками, чтобы уменьшить пробелы, (2) разместить легенду за пределами графика.По отдельности обе вещи супер легки.Вместе они не работают: если я размещаю легенду за пределами сюжетов, используя bbox_to_achnor = (...), интервал между сюжетами портится и subplots_adjust (...) больше не работает.

UPD: Это работает для малого расстояния:

fig, axes = plt.subplots(3, 3)

plt.subplot(331)
# plot something on every subplot
plt.subplot(339)
# plot something here too

plt.subplots_adjust(wspace=0, hspace=0)
plt.tight_layout()
plt.savefig("blabla.pdf", format="pdf")

И с этим кодом все цифры становятся сжатыми:

fig, axes = plt.subplots(3, 3)

plt.subplot(331)
# plot something on every subplot
plt.subplot(339)
# plot something here too

# add outside legend to the first plot
plt.subplot(331)
lgd = plt.legend(ncol=1, loc=2, prop={'size': 10}, bbox_to_anchor=4.2, 0.2))

plt.subplots_adjust(wspace=0, hspace=0)
plt.tight_layout()
plt.savefig("blabla.pdf", format="pdf", bbox_inches="tight", bbox_extra_artists=(lgd,))

Есть идеи?

1 Ответ

1 голос
/ 23 марта 2019

Все будет работать нормально, если вы используете легенду с объектом фигуры fig.В настоящее время вы используете его с последним plt объектом, который соответствует последней подфигуре 339.Используя fig, вам не нужно большое смещение 4.2 для bbox_to_anchor.Что-то вроде 1.1 или 1.2 должно работать нормально

lgd = fig.legend(ncol=1, loc=2, prop={'size': 10}, bbox_to_anchor=(1.2, 0.2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...