如何使用matplotlib从.txt文件中绘制数据?

时间:2016-07-22 17:33:32

标签: python matplotlib

我想使用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()

提前谢谢!

4 个答案:

答案 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

The output looked like this

使用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()