Вы можете просто установить handletextpad
и handlelength
в легенде с помощью legend_handler
, как показано ниже:
import matplotlib.pyplot as plt
import numpy as np
# Plot up a generic set of lines
x = np.arange( 3 )
for i in x:
plt.plot( i*x, x, label='label'+str(i), lw=5 )
# Add a legend
# (with a negative gap between line and text, and set "handle" (line) length to 0)
legend = plt.legend(handletextpad=-2.0, handlelength=0)
Подробная информация о handletextpad
и handlelength
содержится в документации (ссылка здесь и скопирована ниже):
handletextpad : float или None
Прокладка между дескриптором легенды и текстом. Измеряется в единицах размера шрифта. По умолчанию установлено значение None, которое принимает значение из rcParams["legend.handletextpad"].
handlelength : float или None
Длина ручек легенды. Измеряется в единицах размера шрифта. По умолчанию установлено значение None, которое принимает значение из rcParams["legend.handlelength"].
С приведенным выше кодом:
С несколькими дополнительными строками метки могут иметь тот же цвет, что и их линия. просто используйте .set_color()
через legend.get_texts()
.
# Now color the legend labels the same as the lines
color_l = ['blue', 'orange', 'green']
for n, text in enumerate( legend.texts ):
print( n, text)
text.set_color( color_l[n] )
Просто вызов plt.legend()
дает:
person
tsherwen
schedule
06.04.2018
legend.handlelength
на0
- см., например. здесь. - person jonrsharpe   schedule 04.08.2014