2016-04-03 106 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()