所以我试图从本地ASCII文件中绘制一个星的光谱(我程序中的下面的路径是实际的路径,我只是在这里放了一个假的),但是我得到了一个元组错误。 我可能会说,我对Python很陌生。
import numpy as np
import astrotools as at
from matplotlib import pyplot as plt
import pyfits
from astropy.io import fits
def pfit():
f2 = open('/Users/myname/filepathtoASCIIfile', 'r')
lines = f2.readlines()
f2.close()
w = []
f = []
for line in lines:
if not line.startswith('#'):
# if line.endswith('e-16') or line.endswith('e-15'):
# line = line[:-4]
p = line.split()
if not p[0].startswith('#'):
try:
w.append(float(p[0]))
f.append(float(p[1]))
except IndexError:
pass
W = np.array(w)
F = np.array(f)
#return (W, F)
plt.plot(W, F)
plt.show()
我在运行Python时遇到的错误是:
33
---> 34 plt.plot(W, F)
35 plt.show()
36
TypeError:'tuple'对象不可调用
答案 0 :(得分:1)
现在可能是错误在其他地方。您的代码似乎没有任何严重错误,如果您能够创建数组W
和F
,那么您的数据就可以了。
该错误暗示plt.plot
发生了悲伤事件。你可能会在某处说一句话:
plt.plot = ...
例如,你在某个时候写过:
plt.plot = (W,F)
这已经通过元组覆盖原始的plt.plot
函数。现在你试着调用那个元组,它不起作用。
要验证是否是这种情况,请在绘图命令之前添加一行:
print plt.plot
结果应该是这样的:
<function plot at 0x10203040>
如果不是,您已经杀死了plot
命令。
(顺便说一句,感谢您显示代码和实际的错误消息!欢迎来到SO!)