Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python从文本文件打印数据_Python_Matplotlib_Plot - Fatal编程技术网

如何使用Python从文本文件打印数据

如何使用Python从文本文件打印数据,python,matplotlib,plot,Python,Matplotlib,Plot,我有一个文本文件,其中包含来自传感器的近50k行数据,这些传感器连接到树莓pi。它看起来像这样: 2014-07-16 15:57:35.536579, 128, 251, 254, 255, 30.062 2014-07-16 15:57:37.763030, 132, 252, 250, 255, 30.062 2014-07-16 15:57:39.993090, 135, 249, 239, 255, 30.125 2014-07-16 15:57:42.224499, 142, 251

我有一个文本文件,其中包含来自传感器的近50k行数据,这些传感器连接到树莓pi。它看起来像这样:

2014-07-16 15:57:35.536579, 128, 251, 254, 255, 30.062
2014-07-16 15:57:37.763030, 132, 252, 250, 255, 30.062
2014-07-16 15:57:39.993090, 135, 249, 239, 255, 30.125
2014-07-16 15:57:42.224499, 142, 251, 221, 255, 30.125
2014-07-16 15:57:44.452908, 152, 252, 199, 255, 30.187
2014-07-16 15:57:46.683009, 162, 246, 189, 255, 30.187
line = file.readlines()
new_line = line.strip(", ")
date = new_line[0]
sensor1 = new_line[1]
#and so on
所以基本上(从左到右)日期和时间,传感器1,传感器2,传感器3,传感器4,传感器5。我想用Python绘制这个图,我读过matplotlib用于绘制图形的内容。但是如何从文本文件中绘制这些数据呢?我想在x轴上绘制时间戳,在y轴上绘制一张图表中来自不同传感器的数据。我对matplotlib一点经验都没有

在阅读文本文件时,我想到了如下内容:

2014-07-16 15:57:35.536579, 128, 251, 254, 255, 30.062
2014-07-16 15:57:37.763030, 132, 252, 250, 255, 30.062
2014-07-16 15:57:39.993090, 135, 249, 239, 255, 30.125
2014-07-16 15:57:42.224499, 142, 251, 221, 255, 30.125
2014-07-16 15:57:44.452908, 152, 252, 199, 255, 30.187
2014-07-16 15:57:46.683009, 162, 246, 189, 255, 30.187
line = file.readlines()
new_line = line.strip(", ")
date = new_line[0]
sensor1 = new_line[1]
#and so on
我建议使用熊猫(类似于R)。支持您的输入样本位于文件“data.csv”中:

import pandas as pd
df = pd.read_csv('data.csv', parse_dates=True,index_col=0,
        names = ['timestamp','x','y','z','w','k'])
df.plot()

如果您不想安装熊猫,“纯NumPy”解决方案是使用`

import numpy as np
import datetime

# date field conversion function
dateconv = lambda s: datetime.strptime(s, '%Y-%M-%D %H:%M:%S:.%f')

col_names = ["Timestamp", "val1", "val2", "val3", "val4", "val5"]
dtypes = ["object", "uint8", "uint8", "uint8", "uint8", "float"]
mydata = np.genfromtxt("myfile.csv", delimiter=',', names=col_names, dtype=dtypes, converters={"Time": dateconv})
在此之后,
mydata
的内容:

array([('2014-07-16 15:57:35.536579', 128, 251, 254, 255, 30.062),
       ('2014-07-16 15:57:37.763030', 132, 252, 250, 255, 30.062),
       ('2014-07-16 15:57:39.993090', 135, 249, 239, 255, 30.125),
       ('2014-07-16 15:57:42.224499', 142, 251, 221, 255, 30.125),
       ('2014-07-16 15:57:44.452908', 152, 252, 199, 255, 30.187),
       ('2014-07-16 15:57:46.683009', 162, 246, 189, 255, 30.187)], 
      dtype=[('Timestamp', 'O'), ('val1', 'u1'), ('val2', 'u1'), ('val3', 'u1'), ('val4', 'u1'), ('val5', '<f8')])

datetime.datetime
对象现在存储为对象。其他所有内容都以您指定的数据类型存储。

gnuplot可以直接执行此操作。从gnuplot内部:
设置时间“%Y-%m-%d%H:%m:%S”;设置扩展数据时间;使用1:2绘制“t.gp”