我使用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文件重复此操作。
答案 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()