从txt文件

时间:2016-10-14 06:56:27

标签: matplotlib

我已尝试在互联网上建议的每一个解决方案(包括stackoverflow),并且所有这些解决方案都为我报告错误,即使我复制粘贴代码以及文件。 假设我的文件是asd.txt,它看起来像这样:

1 2
2 3
3 4
4 5

其中数字以空格分隔。

Stackoverflow的第一个解决方案:

import numpy as np
import matplotlib.pyplot as plt

with open("asd.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('your x label..')
ax1.set_ylabel('your y label...')

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

leg = ax1.legend()

plt.show()

这会出错:

File "C:/Users/cakodaqo/Documents/Python Scripts/test.py", line 16, in <module>
    y = [row.split(' ')[1] for row in data]

IndexError: list index out of range

第二个解决方案:

import numpy as np
import pylab as pl
data = np.loadtxt('asd.txt')
pl.plot(data[:,0], data[:,1], 'ro')
pl.xlabel('x')
pl.ylabel('y')
pl.xlim(0.0, 10.)
pl.show()

错误:

data = np.loadtxt('asd.txt')
                      ^
SyntaxError: invalid syntax

第3个解决方案:

from matplotlib import pyplot as plt
from matplotlib import style
import numpy as np

style.use('ggplot')

x,y = np.loadtxt('asd.txt',
                 unpack = True,
                 delimiter = ' ')
plt.plot(x,y)

plt.title('asd')
plt.ylabel('ihatepython')
plt.xlabel('ihatemyself')

plt.show()

错误:

ValueError: could not convert string to float: Ascii

有人可以告诉我所有这些问题的解决方案吗?我尝试更改我的文件,我尝试更改分隔符,我复制了相同的文件在线提供,并以某种方式它适用于除我之外的所有人:(如果你不知道为什么我一直收到错误,那么随意发布你自己的解决方案(知道我的运气,那个人也会报错...)。提前谢谢你

P.S。我的实际数据是浮点数,而不是整数,我更喜欢将数据绘制为点,而不连接它们

2 个答案:

答案 0 :(得分:0)

关于第二个解决方案:

data = np.loadtxt(’asd.txt’)中,您没有使用正确的引号。您需要使用'"而不是(您可以看到代码突出显示无法正常工作)。

关于绘图,您可能需要考虑使用scatter代替plot来获取没有直线的点。

这应该有效:

import numpy as np
import pylab as pl
data = np.loadtxt("asd.txt")
pl.scatter(data[:,0], data[:,1], 'ro')
pl.xlabel('x')
pl.ylabel('y')
pl.xlim(0.0, 10.)
pl.show()

答案 1 :(得分:0)

您可以使用

将每列导入为数组
import numpy as np

column1, column2 = np.genfromtxt('data.txt', unpack=True)

编辑:将.txt.-文件转换为UTF8并重试 -