You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中构建ChemoSpec可用的完整Spectra对象以可视化FTIR数据

构建ChemoSpec可用的完整Spectra对象及FTIR可视化指南

一、数据预处理

ChemoSpec的Spectra对象要求行对应样品,列对应波数,而你的原始数据是第一列为波数、其余列为样品,因此第一步需要转置数据:

# 读取FTIR数据(以CSV为例,根据实际格式调整)
ftir_raw <- read.csv("ftir_data.csv", header = TRUE, row.names = 1)
# 转置矩阵:行=样品,列=波数
ftir_mat <- t(ftir_raw)

二、完整构建Spectra对象

matrix2SpectraObject是构建Spectra对象的核心函数,必须明确传入所有必要参数,否则会出现gr.cols、freq.unit这类缺失错误:

library(ChemoSpec)

# 1. 定义分组信息(根据你的实验设计,长度需与样品数一致)
sample_groups <- c("Control", "Control", "Treatment", "Treatment", "Treatment")
# 2. 定义分组颜色(数量需与组数匹配)
group_cols <- c("#1f77b4", "#ff7f0e")
# 3. 定义波数单位
wave_unit <- "cm^-1"

# 构建Spectra对象
ftir_spec <- matrix2SpectraObject(
  mat = ftir_mat,
  freq = as.numeric(rownames(ftir_raw)), # 提取原始数据的波数列(行名)
  names = rownames(ftir_mat), # 样品名称(原始数据的列名)
  groups = sample_groups,
  gr.cols = group_cols,
  freq.unit = wave_unit,
  instrument = "FTIR", # 可选:标注仪器类型
  desc = "FTIR absorption spectra of experimental samples" # 可选:数据集描述
)

三、验证对象完整性

运行以下代码确认Spectra对象的关键属性是否存在:

# 查看对象基本信息
print(ftir_spec)
# 查看对象结构细节
str(ftir_spec)

输出中需包含$ freq(波数向量)、$ data(光谱数据矩阵)、$ groups(分组向量)、$ gr.cols(分组颜色)、$ freq.unit(波数单位)等元素,才算完整。

四、修复常见缺失错误

如果构建时遗漏了参数,可手动补充属性:

# 补充分组颜色
ftir_spec$gr.cols <- c("#1f77b4", "#ff7f0e")
# 补充波数单位
ftir_spec$freq.unit <- "cm^-1"

五、FTIR光谱可视化示例

1. 分组绘制所有光谱

plotSpectra(ftir_spec, main = "FTIR Spectra by Experimental Group")

2. 绘制分组平均光谱(带误差棒)

plotAvgSpectra(ftir_spec, main = "Average FTIR Spectra with Standard Error")

3. 交互式光谱查看(需安装plotly包)

install.packages("plotly")
plotSpectraInteractive(ftir_spec)

内容的提问来源于stack exchange,提问作者snschmid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:46:27