bbox_to_anchor和loc在matplotlib中

时间:2014-07-31 20:32:49

标签: python matplotlib

我遇到了使用关键字matplotlibloc自定义图例位置的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_anchorloc的目的。但是,在同一传奇规范中使用两者有什么好处吗?根据我的理解和用法,在我看来,如果指定了bbox_to_anchor,那么loc参数几乎不关心。

任何人都可以证实吗?我没有看到任何关于此的文件。

2 个答案:

答案 0 :(得分:33)

bbox_to_anchorloc一起使用时,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处。第二个将边界框的中心左边缘放在相同的坐标处(即将图例向右移动)。最后,第三个选项将边界框的中心右边缘放在坐标处(即将图例向左移动)。

答案 1 :(得分:12)

对@Gabriel的解释有点误导。 bbox_to_anchor=[x0, y0]会在位置[x0, y0]处创建一个边框左下角。边界框的扩展为零 - 等于bbox_to_anchor=[x0, y0, 0, 0]。然后,图例将被放置在此框的“内部”,并根据指定的loc参数重叠。因此loc指定图例所在框内的位置。

另请参阅此问题What does a 4-element tuple argument for 'bbox_to_anchor' mean in matplotlib?