我试图找到一种方法来计算半高宽的光谱峰使用R编程。
以下数据集用于获取其中一个峰:
theta <- c(32.1, 32.2, 32.3,32.4,32.5, 32.6, 32.7, 32.8, 32.9, 33.0, 33.1)
intensity <- c(0, 0, 18, 138, 405, 449, 187, 29, 2, 0, 0)
Geom_line是我选择的绘图方式。使用的代码:
pacman::p_load(pacman, ggplot2, dplyr, tidyverse, svglite)
DataOne <- data.frame(thetaOne, intensityOne)
view (DataOne)
PlotOne <- ggplot(data = DataOne) +
geom_line(aes(x = thetaOne, y = intensityOne))
PlotOne
我的愿望是在绘制光谱后,可以计算每个光谱中峰的半峰全宽(峰高一半处的宽度)。我使用的数据集比上面提供的数据集大得多。如果可能,我希望有一个函数允许我选择峰开始和结束的x轴区域。
我发现了这个:Determining FWHM from a distribution in R。然而,它似乎过时了,几乎5岁。而且,我不明白他们提出的解决方案是什么。
1条答案
按热度按时间uttx8gqw1#
这个小函数将返回给定峰值曲线的输入x,y值的FWHM的x,y坐标的 Dataframe :
要在您的案例中使用它,我们只需执行以下操作:
我们可以通过下式得到半峰宽的x值:
可以这样绘制: