我有一个文本文件,其数据如下:
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列。
任何建议,将不胜感激。
答案 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')
看起来像这样: