我正在尝试使用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列元素。谢谢!
答案 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)