2014-12-03 28 views
0

我使用spyder繪製了一些graphe 問題是我想避開第一行並以python可以繪製的格式轉換X軸。 我建立了兩個解決方案爲每probleme,我的文件格式是這樣從python的txt文件中繪製時間格式的graphe

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文件。

+0

嘗試使用熊貓,它的read_table函數更具體。那麼你應該可以使用列名來繪製數據。你也可以看看這裏:http://stackoverflow.com/questions/1574088/plotting-time-in-python-with-matplotlib – Phlya 2014-12-03 08:05:05

回答

1

隨着numpy的,你可以使用genfromtxt功能,可以讓你指定的第一線,或與參數「skiprows」

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

感謝答案忽略量,加入skiprows作爲Overdrivr表明它使程序工作

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()