我有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/