我有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,))


有任何想法吗?

最佳答案

如果将图例与图形对象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))

关于python - 如何同时做这两个事情:调整子图的间距并将图例放在图的外部?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55315594/

10-14 15:53