我正在学习规范,在程序的连续体拟合部分遇到了问题。程序返回一个“UnitsConversionError”。
我使用的是Python 3.7和Spyder 3.3.3。当我使用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“。如果我运行“line =...”在下面的控制台中,返回一个空窗口。
发布于 2019-09-11 02:06:47
这里:
lamb = 10**specdata['loglam']*u.AA您正在将波长转换为埃。
但这里:
plt.xlim(654*u.nm, 660*u.nm)你要求它以纳米为单位进行绘图。试着给它:
plt.xlim(6540*u.AA, 6600*u.AA) 除非有其他东西,否则这个更改应该可以修复它。换句话说,它需要一致的单元。
https://stackoverflow.com/questions/56781506
复制相似问题