峰情万种_Enhancement of Peak Visual

640?wx_fmt=png

作者:李誉辉  

四川大学在读研究生


简介:
笔者在学术生涯中,经常遇到谱线的处理,如DSC,XRD,FIR的谱线。
传统的做法是使用Origin软件进行处理,但是Origin的配色不够赏心悦目。
而且对于批量数据的处理,实在是繁琐。恰巧学了R可视化,于是果断抛弃Origin。
本次教程,将着重介绍谱线的处理,包括基线拟合扣除峰的填充峰面积计算
还有峰值标定,让你的谱线耳目一新,在这个看脸的时代,图好文一半。
看完本次教程,希望各位看官点个好看,祝大家科研顺利,多发Paper。
本次教程主要涉及到的包:
ggplot2,dplyr,ggpmisc,quantmod,purr,magrittr,basicTrendline 。


1 数据预处理

这里笔者以以前的DSC数据为例。
DSC数据,时间变量Time单位是分钟,通过时间来初步截取数据,
横坐标对应的变量是Sample Temperature,
纵坐标对应的变量是Unsubtracted Heat Flow

1.1 数据截取

绘图:

640?wx_fmt=png

1.2 数据标准化

根据时间筛选升温阶段的数据, 再舍弃两头波动较大的数据。

绘图:

640?wx_fmt=png

1.3 标记峰/谷

使用ggpmisc出来很多峰,有重影。故使用quantmod包中的 先找峰,再找谷。根据范围对峰/谷进行筛选,如果是总体下降型曲线,则先找谷,再找峰。
所谓找峰,找谷,就是根据curve的特点,找到特定波峰,波谷的位置。


S_temp

<dbl>

Heat_flow

<dbl>

group

<chr>

166.59146.86436B1
167.04549.37465B2
165.95836.18742B3
164.00445.39948B4
163.82534.58791B5



S_temp

<dbl>

Heat_flow

<dbl>

group

<chr>

172.72941.40188B1
173.36240.57349B2
172.64528.26953B3
170.62938.66760B4
170.99528.36577B5


绘图:

640?wx_fmt=png

1.4 基线扣除

许多表征手段中,为了只显示数据的波动情况,
都涉及到基线的拟合,然后扣除基线,
这样就排除了其它无关因素的干扰。
基线拟合要根据基线的特定来确定拟合的模型。
这里我们发现该curve的波峰两端似乎近似成一条直线,或曲率较小的二次函数。
波峰的起始位置大概从130开始。波峰的结束位置靠近于波谷谷点。

绘图:

640?wx_fmt=png

1.5 单位质量化

很多时候,curve峰值大小与样品的浓度或质量相关。
这时候,就需要对curve进行单位质量处理。
原理就是curve的纵坐标值除以样品的有效质量或浓度。

绘图:

640?wx_fmt=png

1.6 线条分离

上述图形,线条重合比较多,为了便于观看,依次将各个curve的纵坐标向上偏移若干个单位。
偏移量需要手动调整,一次次尝试,这里笔者仅仅展示尝试最终的结果。

绘图:

640?wx_fmt=png

1.7 更新峰尖坐标和波谷坐标

应该刚刚经过基线处理,单位质量处理,线条分离等操作,峰尖和波谷坐标已经发生了变化。
但是横坐标没有变化,只需要更新纵坐标。

2 视觉增强

2.1 主题美化

采用SCi常见的要求,4个坐标轴线条,因为进行了线条分离,纵坐标的刻度文本已经没有必要了。 所以隐藏纵坐标刻度文本。如果读者的paper有其它要求,也可以自定义。

640?wx_fmt=png

2.2 输出到PPT

使用export包可以输出到office, 输出新式为office文件,可以使用追加选项。
输出后,通过取消组合,就能用矢量化修改元素。
但是文字的输出,有些别扭。

2.3 峰面积可视化

峰面积可视化,首先要对峰的基线进行拟合,注意区分,不是curve的基线。
这样就能将峰围成一个多边形区域,进行多边形区域颜色填充和面积计算。

2.3.1 拟合峰baseline

峰的基线拟合,可以有2种方式,一是对峰两侧的curve进行拟合,
根据拟合方程,求出峰的横坐标对应的纵坐标。
而是从峰的起点和结束点画一条直线,根据2点确定一条直线的原理确定峰的基线。
笔者这里仅仅输出第一种方法,第二种仅给出代码。

2点确定一条直线: (牛顿差商公式)。

2.3.2 峰面积计算

这里我们采用rgeos包进行峰面积计算,如果读者有其它的方式,也可以采用,欢迎留言。

刚刚已经计算得到面积了,现在还需要将面积和峰尖坐标融合, 以用geom_text()进行标记。


S_temp

<dbl>

Heat_flow

<dbl>

group

<chr>

area

<dbl>

166.61.243640B114.2
167.02.787298B214.8
166.04.300952B314.8
164.05.853463B414.7
163.87.391237B515.4


S_temp

<dbl>

Heat_flow

<dbl>

group

<chr>

130.0040.02355421B1
130.0250.02345703B1
130.0370.02361300B1
130.0580.02349546B1
130.0750.02342725B1
130.0910.02349322B1


绘图:

## png 
## 2

640?wx_fmt=png

2.3.3 geom_polygon峰填充

640?wx_fmt=png

峰面积可视化的介绍就告一段落,接下来介绍ppmisc包,
里面有一些非常有用的函数,谱线处理非常方便。

3 ggpmisc包_峰情万种

ggpmisc可以对数据点进行拟合,并返回函数模型,模型参数。
可以多种方式标记峰,标记谷。使用方法比较简单,这里仅仅简单介绍。
详细的可以点开后面的参考来源。
当然最关键的是ggpmiscggplot2的结合非常方便。

3.1 stat_peaksstat_valleys标记峰/谷

前面的DSC数据之所以不用ggpmisc标记峰/谷,是因为存在很多肉眼看不见的小峰。

640?wx_fmt=png

640?wx_fmt=png

3.2 stat_poly_eq多项式拟合

首先编造数据:

640?wx_fmt=png

3.3 stat_fit_tb添加模型参数表

640?wx_fmt=png

3.4 stat_fit_deviations残差拟合

前面的拟合图形都没有展示残差分布,stat_fit_deviations可以用棒棒糖的形式展示残差。

640?wx_fmt=png


参考来源:

  • 摄氏度解析

  • 坐标轴符号解析

  • R Integrate Peaks

  • Shaded area under two curves using R

  • ggpmisc教程

  • ggpmisc标记峰

  • 计算面积

  • 求2条曲线的交点

——————————————

往期精彩:

640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值