Вот один из способов контроля длины дескриптора (хотя и не использования этого параметра) и установки его максимального значения/длины в легенде (которая устанавливает размер легенды). Этот подход непосредственно изменяет объект линии в легенде.
LEGEND = ax.legend()
LLINES = LEGEND.get_lines()
MAX = max([max(X) for X in [L.get_xdata() for L in LLINES]])
for L in LLINES:
plt.setp(L,xdata=np.array([L.get_xdata()[0],MAX]))
Во-первых, вы извлечь строки из легенды, используя get_lines()
. Из этих объектов вы можете извлечь значения x
, используя get_xdata()
. Это объединяется здесь в одну строку, которая определяет максимальное значение x
из всех записей легенды.
Как только этот максимум, MAX
, был получен, вы можете пропустить все объекты линии в легенде и установить максимальное значение x
извлеченному MAX
. Это сделает все строки одинаково длинными.
Вот пример. Сначала он управляет одной линией легенды, чтобы быть длиннее (легенда не изменяет размер, так что это можно сделать только до сих пор, и это просто показать здесь пример). Затем он извлекает новый максимум и задает все длины соответственно.
from math import pi as pi
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0.0,2.0*pi,101)
fig,ax = plt.subplots()
LABEL = ['Sin(x)', 'Cos(x)', 'Tan(x)']
LINE = [[],[],[]]
LINE[0] = ax.plot(x,np.sin(x),label=LABEL[0])
LINE[1] = ax.plot(x,np.cos(x),label=LABEL[1])
LINE[2] = ax.plot(x,np.tan(x),label=LABEL[2])
ax.set_ylim([-1.0,1.0])
LEGEND = ax.legend()
plt.show()
Это сюжет с оригинальной легендой:

Теперь можно сбросить первую длину строки до более значений, например:
LLINES = LEGEND.get_lines()
plt.setp(LLINES[0],xdata=np.array([LLINES[0].get_xdata()[0],\
LLINES[0].get_xdata()[1]*1.25]))
plt.show()
В результате в эта легенда:

И, наконец, вышеописанный способ, чтобы получить самую длинную линию и применить его ко всей линии легенды:
MAX = max([max(X) for X in [L.get_xdata() for L in LLINES]])
for L in LLINES:
plt.setp(L,xdata=np.array([L.get_xdata()[0],MAX]))
plt.show()
проявляющейся во всех линиях, имеющие один и ту же - теперь увеличения - длина:
