如何在matplotlib中绘制时间戳(毫秒)

时间:2019-03-08 17:14:49

标签: python matplotlib

我有一个文本文件,其数据如下:

0   0:00:01.192000
1   0:00:00.977000
2   0:00:00.955000
3   0:00:00.959000
4   0:00:00.948000
5   0:00:00.934000

Python代码为:

import matplotlib.pyplot as plt

with open('TR.txt') as f:
lines = f.readlines()

y = [line.split()[0] for line in lines]
x = [line.split()[1] for line in lines]

fig = plt.figure(figsize=(15,10))
ax1 = fig.add_subplot(111)
ax1.set_title("SMP graph")
ax1.set_xlabel('hour')
ax1.set_ylabel('smp')
ax1.bar(x,y, width=0.7)

fig1=plt.gcf()
plt.show()
plt.draw()

但是代码由于在毫秒内浮动而引发错误。

注意:我想将绘图绘制为x轴上的第0列和Y轴上的第1列。

任何建议,将不胜感激。

1 个答案:

答案 0 :(得分:0)

我可以使用熊猫为您提供以下解决方案:

读取数据,请注意分隔符有两个空格。

lines = pd.read_csv('TR.txt', sep="  ", header=None, engine='python')

提供数据框列名称。 Column_1是您的时间列。

lines.columns = ['column_0', 'column_1']

我尝试了各种方法来更优雅地解析您的时间戳,但是没有成功。但是,我认为您仍然可以使用十进制绘制秒数并获得有用的图形。因此,我更改了时间戳的格式,并将结果转换为float。

lines['column_1'] = lines['column_1'].str[6:].astype('float')

然后绘制:

lines.plot(x='column_0')

看起来像这样:

enter image description here