我已尝试在互联网上建议的每一个解决方案(包括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。我的实际数据是浮点数,而不是整数,我更喜欢将数据绘制为点,而不连接它们
答案 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并重试 -