首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取python代码以正确运行specutils continuum命令

无法获取python代码以正确运行specutils continuum命令
EN

Stack Overflow用户
提问于 2019-06-27 06:03:48
回答 1查看 145关注 0票数 1

我正在学习规范,在程序的连续体拟合部分遇到了问题。程序返回一个“UnitsConversionError”。

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

代码语言:javascript
复制
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 =...”在下面的控制台中,返回一个空窗口。

EN

回答 1

Stack Overflow用户

发布于 2019-09-11 02:06:47

这里:

代码语言:javascript
复制
lamb = 10**specdata['loglam']*u.AA

您正在将波长转换为埃。

但这里:

代码语言:javascript
复制
plt.xlim(654*u.nm, 660*u.nm)

你要求它以纳米为单位进行绘图。试着给它:

代码语言:javascript
复制
plt.xlim(6540*u.AA, 6600*u.AA) 

除非有其他东西,否则这个更改应该可以修复它。换句话说,它需要一致的单元。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56781506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档