matplotlib:图例标题的对齐方式

时间:2013-03-26 13:13:40

标签: matplotlib

在matplotlib中,如何调整图例标题的对齐方式?它总是居中,但我需要它与图例框保持对齐。我试图更改标题的文本艺术家的对齐方式,但没有任何效果。有关详细信息,请参阅以下示例:

from pylab import *

x = linspace(0, 1)
plot(x, x, label="1")
plot(x, x**2, label="2")
plot(x, x**3, label="3")
plot(x, sqrt(x), label="square root")

l = legend(title="Title", loc="best")
l.get_title().set_ha("left")               # <== does not work

show()

问题归结为什么和谁控制标题对齐的锚点?将对齐更改为“右”或“中心”具有明显的效果。第二个观察:对于长标题字符串,锚点移动到图例框的左边界......

2 个答案:

答案 0 :(得分:11)

您可以对齐完整的图例框设置rethinkdb --bind all。这会对齐图例框内的所有内容,但效果是在框的两侧而不是中心标题上所需的效果。

  • 左对齐

    leg._legend_box.align

    enter image description here

  • 右对齐

    leg = plt.legend(title="Title")
    leg._legend_box.align = "left"
    

    enter image description here

答案 1 :(得分:6)

我认为您需要使用Text方法取代set_position((x, y))对象。 xy的单位是像素,因此您必须尝试使用​​正确的值,或使用Transform。我不确定Transforms哪种组合最有用。

简而言之,这样的事情可能有用:

l.get_title().set_position((-10, 0)) # -10 is a guess