Pyplot图例:标题的左对齐

时间:2018-11-15 10:09:56

标签: matplotlib legend

我希望我的图例标题位于标签的左侧。如何做到这一点? 为了清楚起见,标题在标签上方的左对齐不是我要的。我希望标题与中间标签大致在同一水平线上。 代替这个:

enter image description here

它应该看起来像这样:

enter image description here

2 个答案:

答案 0 :(得分:1)

将标题放置在图例项左侧的一种方法是将标题从组成图例的垂直包装机中取出,并用图例列水平包装。
然后,它将与新创建的第一列的顶部对齐。

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
for i in range(4):
    ax.plot(np.arange(4)+i, label="label {}".format(i+1))

legend = ax.legend(title="Looong Title", ncol=2, loc="upper left")

def legend_title_left(leg):
    c = leg.get_children()[0]
    title = c.get_children()[0]
    hpack = c.get_children()[1]
    c._children = [hpack]
    hpack._children = [title] + hpack.get_children()

legend_title_left(legend)

plt.show()

enter image description here

答案 1 :(得分:0)

也许有更好的方法来获取它,但是如果要获得与您所要求的类似的东西,可以尝试以下方法:

leg = ax.legend(title='Title')
leg._legend_box.set_width(120)
leg.get_title().set_position((-50, -50))

enter image description here

希望有帮助