2017-06-28 1 views
0

Ich verbinde Liste von (x, y) Punkten auf 1 Diagramm, mit Streudiagramm. Es verbindet alle diese Punkte miteinander, erzeugt aber auch eine Linie am unteren Rand.Python Scatter Plot mit Linie verbunden, aber warum gibt es eine untere Zeile?

Hier ist mein Beispielcode (Ich verwende ipython):

%matplotlib inline 
import numpy as np 
import pandas as pd 
from scipy import stats, integrate 
import matplotlib.pyplot as plt 
import seaborn as sns 
sns.set(color_codes=True) 

mc_time_lst1 = [[0, 8], [1, 12], [2, 18]] 
mc_time_lst2 = [[0, 10], [1, 9], [2, 5]] 
mc_time_lst3 = [[0, 11], [1, 8], [2, 17]] 

plt.plot(mc_time_lst1, 'o-', label='line1') 
plt.plot(mc_time_lst2, '-*', label='line2') 
plt.plot(mc_time_lst3, '-D', label='line3') 
plt.legend(); 

Das ist, was ich habe:

Wie Sie sehen können, gibt es eine goldene Linie (in der Tat, die drei Linien ist) unter den echten 3 Zeilen, die ich möchte. Wenn mehrere Zeilen vorhanden sind, kann die Legende verwirrend sein.

enter image description here

Gibt es eine Möglichkeit, dass die untere Zeile zu entfernen? Oder entfernen Sie die Legende für diese untere Zeile?

Antwort

2

Es ist nicht notwendig, X-Achsen-Daten zu geben, wie es ist 0,1,2.. und so weiter.

Sie können einfach den folgenden Code

%matplotlib inline 
import numpy as np 
import matplotlib.pyplot as plt 
mc_time_lst1 = [ 8, 12, 18] 
mc_time_lst2 = [ 10, 9, 5] 
mc_time_lst3 = [ 11, 8, 17] 
plt.plot(mc_time_lst1, 'o-', label='line1') 
plt.plot(mc_time_lst2, '-*', label='line2') 
plt.plot(mc_time_lst3, '-D', label='line3') 
plt.legend(); 
schreiben
1

Ihre Daten haben das falsche Format. Die Plotfunktion erwartet Werte entweder nur für y oder für x und y getrennt. I.e. Sie würden

plt.plot([0,1,2],[8,12,18]) 

oder in diesem Fall tun einfach

plt.plot([8,12,18]) 

Um die angegebenen Daten von der Frage, plotten, können Sie sie rearange wie folgt:

#%matplotlib inline 
import numpy as np 
import pandas as pd 
from scipy import stats, integrate 
import matplotlib.pyplot as plt 
import seaborn as sns 
sns.set(color_codes=True) 

mc_time_lst1 = [[0, 8], [1, 12], [2, 18]] 
mc_time_lst2 = [[0, 10], [1, 9], [2, 5]] 
mc_time_lst3 = [[0, 11], [1, 8], [2, 17]] 

x1,y1 = zip(*mc_time_lst1) 
x2,y2 = zip(*mc_time_lst2) 
x3,y3 = zip(*mc_time_lst3) 

plt.plot(x1,y1, 'o-', label='line1') 
plt.plot(x2,y2, '-*', label='line2') 
plt.plot(x3,y3, '-D', label='line3') 
plt.legend() 

enter image description here

Verwandte Themen