我有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,))
有什么想法吗?
答案 0 :(得分:1)
如果您将图例与图形对象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))