我想绘制一些数据:
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()
当我使用散点图时,一切似乎都工作正常:
但是,当我使用绘图功能时,它会添加一条额外的线来连接第一个点和一个最大点。但是我只需要一条连接这些点的曲线。
答案 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()