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