bbox_to_anchor 和 loc 在 matplotlib 中

问题描述 投票:0回答:2

我遇到了

matplotlib
代码,它使用关键字
loc
bbox_to_anchor
自定义图例位置。例如:

fig.legend([line1, line2], ['series1', 'series2'], bbox_to_anchor=[0.5, 0.5], 
           loc='center', ncol=2)

我看到了上面的变体,其中

bbox_to_anchor
loc
之后使用。

我明白分别使用

bbox_to_anchor
loc
的目的。但是,在同一个图例规范中使用两者有什么好处吗? 根据我的理解和使用,在我看来,如果指定了
bbox_to_anchor
,那么
loc
参数几乎不关心。

有人可以证实这一点吗?我没有看到任何与此相关的文档。

python matplotlib
2个回答
70
投票

bbox_to_anchor
loc
一起使用时,
loc
参数将通知 matplotlib 图例边界框的哪一部分应放置在
bbox_to_anchor
的参数处。 例如(我稍微简化了命令),下面的三个选项将为您的图例生成不同的位置,

 fig.legend([line1], ['series1'], bbox_to_anchor=[0.5, 0.5], loc='center')
 fig.legend([line1], ['series1'], bbox_to_anchor=[0.5, 0.5], loc='center left')
 fig.legend([line1], ['series1'], bbox_to_anchor=[0.5, 0.5], loc='center right')

第一个命令会将边界框的中心放置在轴坐标 0.5,0.5 处。 第二个会将边界框的左中心边缘放在相同的坐标处(即将图例向右移动)。 最后,第三个选项将把边界框的中心右边缘放在坐标处(即将图例向左移动)。


37
投票

@Gabriel 的解释有点误导。

bbox_to_anchor=[x0, y0]
创建一个边界框,其左下角位于位置
[x0, y0]
。边界框的范围为零 - 相当于
bbox_to_anchor=[x0, y0, 0, 0]
。然后,图例将被放置在该框的“内部”,并根据指定的
loc
参数与其重叠。因此
loc
指定图例在框内的位置。

另请参阅这个问题:'bbox_to_anchor' 的 4 元素元组参数在 matplotlib 中意味着什么?

© www.soinside.com 2019 - 2024. All rights reserved.