列表超出范围错误 - 从.dat文件绘图

时间:2016-06-02 22:56:16

标签: python matplotlib plot text-files

我正在尝试使用python绘制.dat文件。但是我收到一条错误消息。我将其称为'file.dat',它是以下形式的

1 2
3 4
5 6
7 8

使用下面的代码:

import matplotlib.pyplot as plt

with open("file.dat") as f:
    data = f.read()

data = data.split('\n')

x = [row.split(' ')[0] for row in data]
y = [row.split(' ')[1] for row in data] #error from this line of code

fig = plt.figure()

ax1 = fig.add_subplot(111)

ax1.set_title(" title...")    
ax1.set_xlabel('x axis')
ax1.set_ylabel('y axis')

ax1.plot(x,y, c='r', label='data')

leg = ax1.legend()

plt.show()

但是我收到一条错误消息'IndexError:列表索引超出范围“任何想法为什么会这样?我的.dat文件具有相同数量的x,y列元素。谢谢!

1 个答案:

答案 0 :(得分:2)

插入

print data

在您找到x和y列表之前。您在文件末尾有换行符,因此数据在结尾处有一个空字符串:

['1 2', '3 4', '5 6', '7 8', '']

相反,在分割后立即添加一个切片到“按摩”数据

data = data.split('\n')[:-1]

这会删除最后一个空的条目。

Per Tadhg,请注意,这假定文件以换行符结尾。如果不能保证......

data = data.split('\n')
if len(data[-1]) == 0:
    data.pop(-1)