我想使用matplotlib绘制一个txt文件,但我一直收到此错误消息。我不熟悉python,就像我几周前开始学习的那样。文本文件的格式为(长度为2048行):
6876.593750 1
6876.302246 1
6876.003418 0
我想绘制来自txt的数据。文件。
错误消息是[IndexError:list index out of range]
我正在使用的代码是:
import numpy as np
import matplotlib.pyplot as plt
with open("Alpha_Particle.txt") 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]
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_title("Plot title")
ax1.set_xlabel('x label')
ax1.set_ylabel('y label')
ax1.plot(x,y, c='r', label='the data')
leg = ax1.legend()
plt.show()
提前谢谢!
答案 0 :(得分:6)
您只是在读错了数据。这是一个更清洁的方式:
with open('Alpha_Particle.txt') as f:
lines = f.readlines()
x = [line.split()[0] for line in lines]
y = [line.split()[1] for line in lines]
x
['6876.593750', '6876.302246', '6876.003418']
y
['1', '1', '0']
答案 1 :(得分:3)
也许您可以使用pandas或numpy
import pandas as pd
data = pd.read_csv('data.txt',sep='\s+',header=None)
data = pd.DataFrame(data)
import matplotlib.pyplot as plt
x = data[0]
y = data[1]
plt.plot(x, y,'r--')
plt.show()
这是我的数据
1 93
30 96
60 84
90 84
120 48
150 38
180 51
210 57
240 40
270 45
300 50
330 75
360 80
390 60
420 72
450 67
480 71
510 7
540 74
570 63
600 69
使用Numpy,您也可以使用以下方法尝试
import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('data.txt')
x = data[:, 0]
y = data[:, 1]
plt.plot(x, y,'r--')
plt.show()
答案 2 :(得分:1)
快速解决方案是删除数据中的第4个元素:
data.pop()
将其放在
之后data = data.split('\n')
答案 3 :(得分:0)
Chris Arena的答案很简洁。请记住,您正在将str保存到列表中。如果要使用matplotlib绘制x和y,我建议将格式从'str'更改为'int'或'float':
import matplotlib.pyplot as plt
with open('filename.txt', 'r') as f:
line = f.readlines()
x = [float(line.split()[0]) for line in lines]
y = [float(line.split()[1]) for line in lines]
plt.plot(x ,y)
plt.show()