python plot一系列值的水平线

时间:2015-05-14 20:32:37

标签: python matplotlib

我对python很新,并尝试将速度绘制为从当前起始点到下一个起始点的距离的恒定值,因此速度从开始到结束(下一个开始)是恒定的。

例如,距离0到27.82的速度应为13,从27.82到40.12的速度应为15,依此类推。

有什么想法吗?

startpointinmeters speed
0.0     13.0
27.82   15.0
40.12   14.0
75.33   14.0
172.77  17.0
208.64  18.0
253.0   21.0
335.21  20.0
351.16  25.0
590.38  22.0
779.37  21.0
968.35  22.0
1220.66 20.0
1299.17 19.0
1318.32 14.0
1352.7  9.0

2 个答案:

答案 0 :(得分:7)

这可以使用Matplotlib的step函数完成:

import matplotlib.pyplot as plt

x = [0., 27.82, 40.12, 75.33, 172.77, 208.64, 253., 335.21, 351.16,
     590.38, 779.37, 968.35, 1220.66, 1299.17, 1318.32, 1352.7]
v = [13., 15., 14., 14., 17., 18., 21., 20., 25., 22., 21., 22., 20., 
     19., 14., 9.] 

plt.step(x, v, where='post')
plt.xlabel('Position [m]')
plt.ylabel('Speed [m/s]')
plt.show()

结果:

enter image description here

请参阅this example了解'其中'的不同值之间的差异。论点。根据您的描述,您似乎想要发布' post'选项。

答案 1 :(得分:0)

你需要绘制点(0.0,13.0),(27.82,13.0),(27.82,15.0),(40.12,15.0)......并继续这样直到结束。

当您在(0.0,13.0)和(27.82,13.0)之间绘制一条直线时,它将绘制一条介于0和27.82之间的平线,位于13.0的水平。然后,当下一个点到来时,该线从(27.82,13.0)变为(27.82,15.0),这意味着它在没有沿x轴的任何位置上升。等等。

换句话说,你需要循环遍历所有的值xi和yi,并将它们配对为:(x [i],y [i]),(x [i + 1],y [i] )等等......