我想在一个情节中添加两个图例,并将它们放在同一个角落,只是一个在另一个角落之下。看this answer我明白了如何做到这一点。但是,我必须错过不同坐标空间之间的转换。据我所知,首先我得到第一个图例边界框display coordinates
,然后我将其转换为axes coordinates
,然后将右上角坐标传递给第二个图例的bbox_to_anchor
参数,并告诉loc
param我希望这些坐标是第二个图例的右下角(我也可以告诉bbox_transform
这些是轴坐标,但这应该是默认的)。所以现在它看起来像这样:
leg2 = ax.legend(
lhandles2,
llabels2,
title = legtitle,
labelspacing = .9,
borderaxespad = .9,
loc = legloc,
prop = fp_legend,
markerscale = 1.0,
frameon = False,
numpoints = 1
)
ax.add_artist(leg2)
bbleg2 = leg2.legendPatch.get_bbox().inverse_transformed(ax.transAxes)
upper_right = bbleg2.corners()[3]
leg1 = ax.legend(
lhandles1,
llabels1,
labelspacing = .9,
borderaxespad = .9,
prop = fp_legend,
markerscale = 1.0,
frameon = False,
numpoints = 1,
loc = 'lower right',
bbox_to_anchor =list(upper_right),
bbox_transform = ax.transAxes
)
结果完全令人失望,第二个传说(leg1
在这里)丢失,放置在绘图区域外的某个地方。我还尝试在边界框和bbox_transform
处使用不同的变换,但没有成功。