如何从情节中删除多余的线条?

时间:2019-11-25 07:02:41

标签: 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 zip(u2, u1)]

plt.plot(f, Ku)
plt.show()

当我使用散点图时,一切似乎都工作正常:

scatter plot

但是,当我使用绘图功能时,它会添加一条额外的线来连接第一个点和一个最大点。但是我只需要一条连接这些点的曲线。

here is the plot I got

2 个答案:

答案 0 :(得分:2)

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

x,y = zip(*[(a,b) for a,b in sorted(zip(f,Ku))])
plt.plot(x,y)
plt.show()

答案 1 :(得分:2)

如果查看用作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()