用python中的文本文件绘制时间格式的图形

时间:2014-12-03 07:32:11

标签: python time matplotlib plot

我使用spyder绘制一些graphe 问题是我想避免第一行并以python可以绘制的格式转换X轴。 我为每个问题创建了两个解决方案,我的文件格式是这样的

Heure   O3  unit    alarm
11:46:35    1.054   ppb 
11:46:45    0.9767  ppb 
11:46:55    1.172   ppb 
11:47:05    1.173   ppb 
11:47:15    1.252   ppb 
11:47:25    0.813   ppb 
11:47:35    1.247   ppb 
11:47:45    1.054   ppb 
11:47:55    1.721   ppb 
11:48:05    1.098   ppb 
11:48:15    1.321   ppb 
11:48:25    0.4157  ppb 
11:48:35    0.856   ppb 
11:48:45    0.856   ppb 

避免第一行的第一个解决方案:

f = open("filename.txt", "r")
header1 = f.readline()
for line in f:
line = line.strip()
columns = line.split()
time = columns[0]
concentration = float(columns[1])
print time, concentration

但我无法绘制它,因为他不接受格式HH:MM:SS

绘图的第二个解决方案:

import matplotlib.pyplot as plt
from matplotlib.dates import strpdate2num
import numpy as np

time, val = np.loadtxt("filename.txt", 
                       usecols=(0,1), unpack=True,converters = {0: strpdate2num("%H:%M:%S")})

plt.plot_date(time, val, "r")
plt.show()

它工作但我需要手动删除第一行,我试图避免这一步,因为我会为几个txt文件重复此操作。

2 个答案:

答案 0 :(得分:1)

使用numpy,您可以使用genfromtxt函数,该函数可让您使用参数'skiprows'指定要忽略的第一行数量

# Ignore first two lines 
t,a,b = np.genfromtxt(path,skiprows=2,delimiter='\t',unpack=True)

答案 1 :(得分:0)

感谢您的答案,将Overrows添加为“Overdrive”表明它使程序正常工作

import matplotlib.pyplot as plt
from matplotlib.dates import strpdate2num
import numpy as np

time, val = np.loadtxt("filename.txt", 
                       usecols=(0,1), sliprows=1, unpack=True,converters = {0: strpdate2num("%H:%M:%S")})

plt.plot_date(time, val, "r")
plt.show()