28

在 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()

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

4

2 回答 2

31

您可以对齐完整的图例框设置leg._legend_box.align。这将对齐图例框内的所有内容,但效果是希望将标题放在框的两侧而不是中心。

  • 左对齐

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

    在此处输入图像描述

  • 右对齐

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

    在此处输入图像描述

于 2017-06-19T00:04:17.043 回答
7

我认为您需要使用该方法置换Text对象。和set_position((x, y))的单位是像素,因此您必须尝试哪些值看起来正确,或者使用. 我不确定哪种组合可能最有用。xyTransformTransforms

所以简而言之,这样的事情可能会起作用:

l.get_title().set_position((-10, 0)) # -10 is a guess
于 2013-03-26T13:49:38.050 回答