我在以下csv表中有数据。尽管在python中绘图是相当棘手的。我可以手动删除一些标题行,然后绘制一些数据与时间的关系,但时间是字符串格式,并以分钟和小时分隔...
我删除标题行后尝试选择数据的第一列,但收到unhashable type: slice
错误消息。
如果我将时间数据分开,我可以使用这种代码:
def get_sec(time_str):
h, m, s = time_str.split(':')
return int(h) * 3600 + int(m) * 60 + float(s)
一旦我将所有数据都放在一个数组(矩阵)中,那么从那时起,我就可以创建一个图:
plt.plot(data[:,0],data[:,1],'r',data[:,0],data[:,2],...
如果我可以自动处理标题,那会更好,但这不是什么大问题。以下是一些数据:
00:00:00.000 0.002 0.003 0.002 7.74 8.04 7.74 160.44
00:00:00.008 0.001 0.003 0.003 7.74 8.34 8.04 160.245
00:00:00.016 0.001 0.003 0.002 7.74 8.34 7.74 160.065
00:00:00.024 0.002 0.003 0.002 7.74 8.04 7.74 160.245
00:00:00.032 0.001 0.003 0.002 7.74 8.04 8.04 159.705
00:00:00.040 0.002 0.003 0.002 7.44 8.04 8.04 160.245
答案 0 :(得分:0)
假设您的数据保存在一个看起来像这样的文件中
time colA colB colC colD valueA valueB valueC
00:00:00.000 0.002 0.003 0.002 7.74 8.04 7.74 160.44
00:00:01.008 0.001 0.003 0.003 7.74 8.34 8.04 160.245
00:00:02.016 0.001 0.003 0.002 7.74 8.34 7.74 160.065
00:00:03.024 0.002 0.003 0.002 7.74 8.04 7.74 160.245
00:00:04.032 0.001 0.003 0.002 7.74 8.04 8.04 159.705
00:00:05.040 0.002 0.003 0.002 7.44 8.04 8.04 160.245
您可以使用 pandas 读取数据,并使用matplotlib绘制,如下所示:
import pandas as pd
import matplotlib.pyplot as plt
fn = "data/timetable.txt"
df = pd.read_csv(fn,delim_whitespace=True, parse_dates=True )
df["time"] = pd.to_datetime(df["time"], format="%H:%M:%S.%f")
plt.plot(df["time"], df["valueA"])
plt.plot(df["time"], df["valueB"])
plt.show()