Легенда Pyplot: выравнивание по левому краю - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу, чтобы заголовок моей легенды был слева от ярлыков. Как этого достичь? Просто чтобы прояснить, выравнивание по левому краю над ярлыками - это не то, что я прошу. Я хочу, чтобы заголовок находился примерно на том же горизонтальном уровне, что и средняя метка. Вместо этого:

enter image description here

Это должно выглядеть примерно так:

enter image description here

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Один из вариантов размещения заголовка слева от элементов легенды - вынуть заголовок из вертикального упаковщика, который составляет легенду, и упаковать его горизонтально со столбцами легенды.
Затем он будет выровнен по верху только что созданного самого первого столбца.

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

0 голосов
/ 15 ноября 2018

Возможно, есть лучший способ получить его, но чтобы получить что-то похожее на то, что вы просите, вы можете попробовать следующим образом:

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

enter image description here

Надеюсь, это поможет

...