2017-06-28 2 views
0

Je relie une liste de points (x, y) sur un graphique, avec un diagramme de dispersion. Il relie tous ces points ensemble, mais génère également une ligne en bas.Python Scatter Tracer connecté avec la ligne, mais pourquoi il y a une ligne de fond?

Voici mon exemple de code (j'utilise 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(); 

C'est ce que je suis:

Comme vous pouvez le voir, il y a une ligne d'or (en fait qui est 3 lignes) sous les 3 vraies lignes que je veux. Ensuite, quand il y a plusieurs lignes, regardez la légende peut être source de confusion.

enter image description here

Est-il possible de supprimer cette ligne de fond? Ou supprimer la légende pour cette ligne de fond?

Répondre

2

Il n'est pas nécessaire de donner des données d'axe x comme c'est 0,1,2.. et ainsi de suite.

Vous pouvez simplement écrire le code suivant

%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(); 
1

Vos données ont le mauvais format. La fonction de tracé attend des valeurs pour seulement y ou pour x et y séparément. C'est à dire. vous feriez

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

ou dans ce cas simplement

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

Pour tracer les données fournies à partir de la question, vous pouvez les rearange comme suit:

#%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