2016-04-03 101 views
0

我有一些數據要繪製,x和y的格式與示例代碼的一小段相同。pyplot,從左到右繪圖

import matplotlib.pyplot as plt 

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

這導致了一個相當奇怪的圖。 wrong graph

什麼pyplot不會被借鑑插入第二個第一點的直線,然後我希望它借鑑低X高X線的第三等 ,但我似乎可以找到一個很好的方法來做到這一點。我希望我的生產線像這樣。

correct graph

什麼是實現這一目標的最簡單的方法,給我的X和Y的數據是相同的格式,但比這個例子更復雜?

回答

3

要獲得圖形正如你所說,你需要有值x的排序順序,您可以實現這樣的:

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

現在用x和y ploting(未測試)。

+2

https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.argsort.html'如果是這樣的話,np.argsort'也是有用的。 – tacaswell

0

您可以同時更改y你的X列表進行排序,

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