2016-04-03 13 views
0

Ich habe einige Daten, die ich plotten möchte, x und y ist im gleichen Format wie dieses kleine Stück Beispielcode.pyplot, plotten von links nach rechts

import matplotlib.pyplot as plt 

    y = [1,1,3,4] 
    x = [1,4,2,3] 
    plt.plot(x,y,'-o') 
    plt.show() 

Dies ergibt eine ziemlich seltsame Grafik. wrong graph

Welche pyplot hat sie eine Linie von dem ersten Punkt zu dem zweiten eingefügt zeichnen, dann auf den dritten usw. ich es will High-x eine Linie von Low-x ziehen, aber ich kann scheinen Finde einen guten Weg, dies zu tun. Ich möchte, dass meine Linie so ist.

correct graph

Was ist der einfachste Weg, dies, meine x und y-Daten im gleichen Format, aber komplexer als dieses Beispiel gegeben zu erreichen?

Antwort

3

die Grafik zu erhalten, wie Sie erwähnt haben, müssen Sie haben Werte in x in sortierter Reihenfolge, die Sie wie folgt erreichen:

z = sorted(zip(x,y)) 
x=[i[0] for i in z] 
y=[i[1] for i in z] 

und jetzt x und y für ploting (nicht getestet).

+2

https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.argsort.html ' np.argsort' ist auch nützlich für diese Art, wenn Sache. – tacaswell

0

Sie Ihre x Liste mit gleichzeitig Ändern der y sortieren,

import matplotlib.pyplot as plt 

y = [1,1,3,4] 
x = [1,4,2,3] 



for i in range(len(x)): 
    for k in range(len(x) - 1, i, -1): 
     if (x[k] < x[k - 1]): 
      x[k-1],x[k]=x[k],x[k-1] 
      y[k-1],y[k]= y[k],y[k-1] 


print x,y 
plt.plot(x,y,'-o') 
plt.show()