Ответ 1
Вы можете изменить количество маркеров, показанных в легенде, с помощью ключевого слова numpoints
:
import matplotlib.pyplot as plt
import numpy as np
x1 = y1 = np.linspace(0, 10, 100)
x2 = np.sin(x1)
y2 = np.cos(y1)
plt.plot(x1,x2,'g--^', label='regional')
plt.plot(y1,y2,'b-o', label='local')
plt.legend( loc='upper left', numpoints = 1 )
plt.show()
Я считаю, что маркеры появляются дважды (по умолчанию), потому что matplotlib пытается показать линейные коннекторы между маркерами. Это выглядит немного странно, когда нет разъема.
Если график имел сплошные и пунктирные линии,
plt.plot(x1,x2,'g--^', label='regional')
plt.plot(y1,y2,'b-o', label='local')
то легенда выглядит так:
и теперь вы можете увидеть эффект linestyle между маркерами в легенде (а также на графике).
Если вам вообще не нужен дескриптор легенды, вы можете использовать
plt.legend(..., handlelength=0)
Например,
import numpy as np
import matplotlib.pyplot as plt
x1 = y1 = np.linspace(0, 10, 100)
x2 = np.sin(x1)
y2 = np.cos(y1)
plt.plot(x1,x2,'g--^', label='regional')
plt.plot(y1,y2,'b-o', label='local')
plt.legend(loc='best', numpoints=1, handlelength=0)
plt.show()
Вы можете использовать
plt.legend(loc='best', numpoints=1, handlelength=0,
markerscale=0, handletextpad=0)
чтобы удалить маркер легенды.