2012-10-04 15 views
12

Prosty spisek z legendą wykonaną za pomocą matplotlib daje następujące wyniki: znaczniki po lewej stronie etykiet mojej legendy pojawiają się dwa razy. Czy ktokolwiek wie, dlaczego i jak uniknąć problemu? Moje polecenia:Legenda plotowania w Pythonie: markery pojawiają się dwa razy

pl.plot(x1,x2,'g^', label='regional') 
pl.plot(y1,y2,'bo', label='local') 
pl.legend(loc='upper left') 

Dziękuję

Odpowiedz

27

Można zmienić liczbę markerów przedstawionych w legendzie za pomocą numpoints kluczowe:

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() 

enter image description here


I że powodem, dla którego znaczniki pojawiają się dwa razy (domyślnie), jest to, że m atplotlib próbuje pokazać łączniki stylowe między markerami. Wygląda to trochę dziwnie, gdy nie ma złącza.

Jeżeli działka miał stałe i przerywane linie,

plt.plot(x1,x2,'g--^', label='regional') 
plt.plot(y1,y2,'b-o', label='local') 

następnie legenda wygląda następująco:

enter image description here

a teraz można zobaczyć efekt lineStyle między markerami w legenda (jak również na wykresie).


Jeśli nie chcemy żadnego uchwytu legendy w ogóle, wówczas można użyć

plt.legend(..., handlelength=0) 

Na przykład

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() 

enter image description here

Można użyć

plt.legend(loc='best', numpoints=1, handlelength=0, 
      markerscale=0, handletextpad=0) 

, aby również usunąć znacznik legendy.

+0

Zrozumiano. Dziękuję Ci bardzo! – Patrick

+0

Czy można całkowicie odłączyć złącze linii? Czy muszę użyć do tego celu polecenia 'scatter()'? – Thriveth

+0

Dodałem kod powyżej pokazujący, jak to zrobić. – unutbu

Powiązane problemy