如何从ASCII文件绘制波长与通量的关系图
我正在尝试从一个本地的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
类型错误:'tuple'对象不可调用
1 个回答
1
现在可能是其他地方出了问题。你的代码看起来没什么大问题,如果你能成功创建数组 W
和 F
,那么你的数据应该是没问题的。
错误提示表明 plt.plot
可能出了点状况。你可能在某个地方写了:
plt.plot = ...
比如,你在某个时刻写了:
plt.plot = (W,F)
这段代码把原来的 plt.plot
函数给覆盖成了一个元组。现在你尝试调用这个元组,但它不工作。
为了确认是不是这样,建议在你的绘图命令之前加一行:
print plt.plot
结果应该是类似这样的:
<function plot at 0x10203040>
如果不是,那说明你把 plot
命令给搞坏了。
(顺便说一下,感谢你分享代码和实际的错误信息!欢迎来到 Stack Overflow!)