等距x轴值的折线图python

时间:2018-12-19 14:39:36

标签: python pandas matplotlib axis linegraph

我有一组由时间和值组成的数据。

  

Blockquote

使用此代码,我得到:

time=['07:45','8:15','8:45','9:35','10:15','15:05','16:05']
value=[3,8,12,54,23,12,5]
plt.plot(time,value)
plt.show()

enter image description here

您可以看到10:15和15:15之间存在巨大差距。我想有一个x轴,它也可以反映一个记录和另一个记录之间的时间差。换句话说,我需要10:15和15:15之间的差距要大于07:45和8:15之间的差距。有什么办法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

显然,其他回答者没有看到我的评论。我所说的“实际绘制时间值”是指将时间转换为async Task个对象。然后绘制它们会默认导致等距标签。如果需要,可以通过指定H:M格式来美化它们。

datetime

enter image description here

答案 1 :(得分:0)

第一步是将字符串转换为数字值:

time=['07:45','8:15','8:45','9:35','10:15','15:05','16:05']
d=[]
for i in time:
    c=i.split(':')
    d.append((float(c[0])-7)*60+float(c[1]))

print d

我们将每次与7点钟分开的分钟数关联。 然后,我们可以进行绘图:

value=[3,8,12,54,23,12,5] 
import matplotlib.pyplot as plt
plt.plot(d,value)

并更改刻度线:

value=[3,8,12,54,23,12,5] 
import matplotlib.pyplot as plt
plt.plot(d,value)
plt.xticks(d,time)
plt.show()

如果要使用其他X标记,只需将它们手动写入列表中,例如:

time2=['8:00','10:00','12:00','14:00','16:00']

然后您像以前一样转换列表:

d2=[]
for i in time2:
    c=i.split(':')
    d2.append((float(c[0])-7)*60+float(c[1]))

print d2

然后您相应更改刻度线:

plt.xticks(d2,time2)