无法获取python代码以正确运行specutils连续拟合命令

时间:2019-06-26 22:03:48

标签: astropy

我正在学习Specutils,并且在程序的连续拟合部分遇到了问题。程序返回“ UnitsConversionError”。

我在Spyder 3.3.3中使用Python 3.7。当我使用run命令时,程序返回上面给出的错误。如果我在Spyder控制台中使用相同的代码行,则该代码将返回一个空图。

from specutils import Spectrum1D
lamb = 10**specdata['loglam']*u.AA
flux = specdata['flux']*10**-17*u.Unit('erg cm-2 s-1 AA-1')
spec = Spectrum 1D(spectral_axis=lamb, flux=flux)

lines = plt.step(spec.spectral_axis, spec.flux)

from specutils.fitting import fit_generic_continuum
cont_norm_spec = spec/fit_generic_continuum(spec)(spec.spectral_axis)
lines = plt.step(cont_norm_spec.wavelength, cont_norm_spec.flux)
plt.xlim(654*u.nm, 660*u.nm)

结果应该是两个图。首先是整个频谱。 (不包括加载的文件。)第二个应该是该图的一个小节。第二个图不显示。而是返回“ UnitsConversionError”。如果我在控制台中运行“ lines = ...”并在下面运行,则会返回一个空窗口。

1 个答案:

答案 0 :(得分:1)

这里:

lamb = 10**specdata['loglam']*u.AA

您正在将波长转换为埃。

但是这里:

plt.xlim(654*u.nm, 660*u.nm)

您要求它以纳米为单位绘制。尝试给它:

plt.xlim(6540*u.AA, 6600*u.AA) 

除非有其他问题,否则此更改应该可以解决。换句话说,它需要一致的单位。