Python 如何从绘图中删除一条额外的线?

Python 如何从绘图中删除一条额外的线?,python,matplotlib,Python,Matplotlib,我想绘制一些数据: u1 = [] for i in range(12): u1.append(10) f = [14.04, 13.31, 12.71, 11.89, 9.92, 8.53, 14.04, 14.92, 15.42, 16.14, 17.42, 20.78] u2 = [5.8, 4.8, 3.8, 2.8, 1.8, 0.8, 5.8, 4.8, 3.8, 2.8, 1.8, 0.8] Ku = [round(i/j, 2)*100 for i, j in z

我想绘制一些数据:

u1 = []

for i in range(12):
    u1.append(10)

f = [14.04, 13.31, 12.71, 11.89, 9.92, 8.53, 14.04, 14.92, 15.42, 16.14, 17.42, 20.78]

u2 = [5.8, 4.8, 3.8, 2.8, 1.8, 0.8, 5.8, 4.8, 3.8, 2.8, 1.8, 0.8]

Ku = [round(i/j, 2)*100 for i, j in zip(u2, u1)]

plt.plot(f, Ku)
plt.show()
当我使用散点图时,一切似乎都很好:

然而,当我使用plot函数时,它会添加一条额外的线,连接第一个点和一个最大点。但我只需要一条连接这些点的曲线


必须对x和y值进行排序

x,y=zip(*[(a,b)表示a,b已排序(zip(f,Ku)))
平面图(x,y)
plt.show()

您必须对x和y值进行排序

x,y=zip(*[(a,b)表示a,b已排序(zip(f,Ku)))
平面图(x,y)
plt.show()

如果查看用作x轴的f列表,您会发现这些值没有顺序。Matplotlib只是按照您给它的点的顺序跟随这条线

在打印之前,可以执行以下操作,以正确的顺序对值进行排序:

import numpy as np
ord = np.flip(np.argsort(f))
f_orderd = np.array(f)[ord]
Ku_ordered =np.array(Ku)[ord]
plt.plot(f_ordered,Ku_ordered); 
plt.show()

如果查看用作x轴的f列表,您会发现这些值没有顺序。Matplotlib只是按照您给它的点的顺序跟随这条线

在打印之前,可以执行以下操作,以正确的顺序对值进行排序:

import numpy as np
ord = np.flip(np.argsort(f))
f_orderd = np.array(f)[ord]
Ku_ordered =np.array(Ku)[ord]
plt.plot(f_ordered,Ku_ordered); 
plt.show()