Matplotlib:相对于第一个定位第二个图例

时间:2016-07-13 01:35:56

标签: python matplotlib plot legend

我想在一个情节中添加两个图例,并将它们放在同一个角落,只是一个在另一个角落之下。看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处使用不同的变换,但没有成功。

0 个答案:

没有答案