Python - 从txt文件绘制,跳过行

时间:2018-03-15 19:26:41

标签: python file plot

我的脚本有问题。我有(blabla。)txt文件,例如:

blablaba bla
dsadsadsa
dsadsadsa
50 2323
60 2839
70 9832
80 0000
.....
....
...

和我写的脚本:

import numpy as np
import matplotlib.pyplot as plt

with open("blabla.txt") as f:
    for line in xrange(3):
        next(f)
    for line in f:

      data = f.read()

      data = data.split('\n')

      x = [row.split()[0] for row in data]
      y = [row.split()[1] for row in data]

      index = [i for i,val in enumerate(x)]

      fig = plt.figure()
      ax1 = fig.add_subplot(111)
      ax1.set_title("graph")    
      ax1.set_xlabel('time')
      ax1.set_ylabel('distance')
      ax1.set_xticklabels(x)
      ax1.plot(index ,y, c='r', label='distance1')
      leg = ax1.legend()
      plt.locator_params(nbins=len(index)-1)
      plt.show()

第一个问题是:当我想跳过(因为图表)txt文件中的前三行时,是否为真(脚本中的语法)?

第二个:在脚本之后它说:

data = f.read()
ValueError: Mixing iteration and read methods would lose data.

问题是什么,因为它的大小? (txt文件大约有600 000行)

感谢所有帮助.... Funstorm60

1 个答案:

答案 0 :(得分:0)

您可以使用:

with open("<fname>.txt", 'r') as datafile:
    __data = datafile.readlines()[3:]

data = [[float(value) for value in line.split()] for line in __data]

这将为您提供数据的2D数组 - 尽管它不包含您在问题中包含的索引信息。

编辑:抱歉,我错过了对.split()

的来电

编辑:举个例子

1 2 3 4
2 3 4 5
6 5 4 3

将给出输出:

[[1.0, 2.0, 3.0, 4.0], [2.0, 3.0, 4.0, 5.0], [6.0, 5.0, 4.0, 3.0]]