做FT-IR的人应该都有这种体会:仪器采集完光谱只是第一步,真正让数据“能进文章、能讲清楚问题”的,是后面那段看不见但极其磨人的数据处理和绘图工作。尤其是用Origin来处理红外光谱,几乎是材料、化学、生物、环境等方向的标配流程。可偏偏这个流程里坑特别多:原始数据导进去是乱的、基线总飘、平滑之后峰形变了、导出的图不是分辨率不够就是字体不对。这篇内容我就从自己这些年处理FT-IR数据的实际经验出发,把Origin里光谱数据处理、绘图、曲线优化、图形美化这套完整流程拆开来讲,适合刚接触红外的学生,也适合被导师催着出图却又总被细节卡住的科研党。
1. 傅里叶红外数据在Origin里的“入场姿势”
1.1 光谱仪导出格式五花八门,先统一成Origin能高效识别的样子
FT-IR光谱仪厂家很多,Thermo、Bruker、PerkinElmer、Shimadzu各有各的软件,导出的文件后缀也乱七八糟:.spa、.dpt、.csv、.txt、.xls都有。用Origin处理前,我强烈建议先在光谱软件里把数据统一转成纯文本格式,也就是.csv或.txt,不要直接拉.spa进去,除非你的Origin版本刚好装了对应插件。为什么?因为.spa这类二进制文件里除了光谱数据,还包含仪器参数、采集时间、背景文件信息等大量元数据,Origin默认情况下并不会完整解析这些内容,导进去经常出现数据错位或只有一条斜线的情况。
我自己的做法是:在光谱软件(比如OMNIC或Spectrum软件)里把目标谱图打开,先确认横坐标是波数(cm⁻¹)、纵坐标是透过率(%)或吸光度(Abs),然后用“导出/Export”功能存成CSV格式。导出时注意看分隔符,最好选逗号或Tab键分隔,避免用分号——部分中文系统里分号分隔会让Origin识别出问题。文件里通常第一列是波数,第二列是透过率或吸光度,有的仪器会多出几列背景或时间信息,没用的列可以直接删掉,只保留你要的那两列,这样后面在Origin里做任何操作都清爽太多。
如果你拿到手的已经是.txt或.dat文件,双击导入前先确认表头有几行。Origin导入文本时会让你设置“Header Lines”的数量,常见的是1行或者2行。这步别偷懒,宁可在导入预览时多花十秒钟看仔细,也别等数据全变成文本型变量后再去反复转换。
1.2 数据表结构:X轴波数、Y轴信号,别把顺序搞反
在Origin里处理FT-IR数据,最基础的一条规则是:第一列放波数(X轴),第二列放信号强度(Y轴)。波数单位是cm⁻¹,这个单位本身有个特点——它和波长成反比,也就是说中红外常见的4000到400 cm⁻¹区间,对应的是2.5到25微米波长,数值越大代表波数越大、能量越高。很多刚入门的同学容易在横坐标方向上犯迷糊:明明测的是同一个峰,怎么别人图里峰朝左、我图里峰朝右?这不是数据错了,是X轴的显示方向问题。红外光谱通常习惯把高波数放在左边、低波数放在右边,也就是4000在左下角、400在右下角,这个“倒轴”显示习惯我会在后面绘图章节里细说,但在数据表层面,波数列一定是从大到小或从小到大连续排列的,中间不能有跳变和空行。
多组样品的数据可以按“宽格式”放:第一列是波数,后面每一列是一个样品的信号值,列标题命名成Sample 1、Sample 2这样的清晰名称。这样后面画叠图的时候,只要全选所有列,一次就能生成多曲线图。也有的人习惯用“长格式”,也就是把每个样品的数据上下堆叠在一起,再单独加一列样品ID。长格式的优点是方便用Origin的“Plot Setup”按组绘图,也方便后期做统计分析和分组上色。我的建议是:如果只是三五条曲线出图展示,用宽格式最省事;如果要做几十个样品的批量处理和比较,用长格式配合分组面板更合适。
1.3 单位换算和常见的横坐标变化需求
很多光谱仪默认导出的是波数,但论文排版偶尔需要波长(nm或μm)作为横坐标。在Origin里做这个换算,不需要额外工具,直接新增一列,右键“Set Column Values”,填入公式10000/A或10000000/A就可以把波数(cm⁻¹)转成微米(μm)或纳米(nm)。这里注意:10000是波数(cm⁻¹)和微米(μm)之间的换算系数,具体是1 cm⁻¹对应10000 μm⁻¹的关系倒推过来的,公式写成10000/[波数列]生成的就是以μm为单位的波长列。如果你的数据范围是4000-400 cm⁻¹,换算后波长大概是2.5-25 μm,趋势会和波数完全相反——波长越大,波数越小。作图时如果不想让横坐标怪异,记得把X轴范围调成从小到大再翻转方向。
2. 光谱数据预处理:去噪、基线校正与归一化
2.1 FT-IR噪声从哪来?Savitzky-Golay平滑为什么经典
FT-IR光谱里的噪声来源主要是探测器热噪声、电路噪声、水汽和二氧化碳吸收的干扰,以及样品本身不均匀造成的散射。尤其在低透过率区域(比如强吸收峰的边缘),噪声会被放大,曲线看起来毛毛躁躁的。处理噪声最常用的不是简单平均,而是Savitzky-Golay(SG)平滑。这个算法的核心思想是:在一个滑动窗口里,用多项式拟合局部数据点,用拟合值替代中心点的值。相比移动平均,SG平滑的优点是能在去噪的同时较好地保留峰的宽度和高度,不容易把尖锐峰“磨平”。
在Origin里做SG平滑,路径是Analysis → Signal Processing → Smooth。打开对话框后,Method选Savitzky-Golay,然后设置“Points”也就是窗口大小,以及“Polynomial Order”多项式阶数。窗口太小去噪效果差,窗口太大会把相邻的两个峰糊成一个包。我的经验是:红外光谱常规分辨率(4 cm⁻¹)下,窗口选9到15个点比较稳妥,多项式阶数选2或3。如果原始数据特别毛糙,可以先做一次窗口为11、阶数为2的平滑,看效果不够再加到15,但尽量不要超过25,否则峰形失真会很明显。
2.2 基线漂移的原因和Origin里三种基线校正方法
红外光谱的基线漂移几乎人人都遇见过。原因通常是样品厚度不均、表面粗糙度不同,或是仪器光路里水汽/CO₂随时间波动。基线漂移表现在谱图上就是整条曲线整体抬高或倾斜,某些区域还有一个缓慢起伏的“馒头包”。基线不校正,后面的峰高比较、峰面积计算都会出错。
Origin里常见的基线校正方式有三种:
第一种是简单两点校正。在需要校正的波段两端各选一个点,把这两点连线作为基线,然后用原始信号减去这条直线。这个方式适合基线只是线性倾斜的情况,操作上是Analysis → Peaks and Baseline → Baseline,在弹窗里选Manual(手动模式),用鼠标在曲线两端点两下,然后勾选Subtract Baseline直接扣除。
第二种是分段线性校正。当基线不是直线,而是有几个折点的时候,手动在多个“谷底”位置打点,Origin会用折线把这些锚点连成基线再扣除。这种方式适合处理聚合物薄膜那种整体鼓包的现象,但锚点选哪里很考验经验,选多了会把真实峰位削掉。
第三种是多项式拟合基线。在Peaks and Baseline对话框里选Automatic或User Defined,让Origin自动识别非峰区域的点,再用多项式拟合出平滑基线。这个方法对信噪比好的数据效果很好,但自动识别的峰区范围需要你检查一下,如果自动识别的峰数不对,可以手动增减峰的数量后再重新拟合。
无论用哪种方法,扣完基线后都强烈建议立即新建一列,把校正后的数据存成新的一列,而不是直接在原列上覆盖。因为基线校正是有“主观性”的操作,后面如果发现扣多了扣少了,你还能回到原始数据重新来一遍。
2.3 透过率和吸光度,到底用哪个?百分比怎么换算
FT-IR原始导出数据纵坐标最常见的是透过率(%Transmittance,T%)。透过率和吸光度(Absorbance,A)之间的换算关系是:A = -log₁₀(T / 100),这里T用的是百分数数值,比如透过率60%,对应吸光度就是 -log₁₀(0.6) ≈ 0.222。如果数据导出时已经是0到1之间的透过率小数,那公式就是A = -log₁₀(T)。
在Origin里新建一列,右键Set Column Values,输入公式-log(Col(B)/100)就能把百分之透光率转成吸光度,前提是B列存的是透光率百分数。为什么要转?因为后续如果要比较峰高、计算峰面积,吸光度模式更常用,因为吸光度与样品浓度是线性关系(朗伯-比尔定律),而透过率和浓度是对数关系,直接看峰高做定量会非常别扭。
需要注意的是,某些情况下论文要求展示透过率谱图,因为透过率谱图更贴近“原始感觉”,吸收峰是向下的谷。如果你的导师或期刊要求T%图,那就不转吸光度,但峰位标注和峰面积计算都要在吸光度模式下做完,再切换回透过率展示。这个切换在Origin里很简单:对已有图形直接右键Y轴数据列,选择Set As之后改列属性,或者干脆再复制一列数据并修改公式,重新绘图。
2.4 归一化的目的和最省事的实现方式
做FT-IR对比时,样品的厚度或浓度很难做到完全一致,这会导致光谱的绝对强度有差异。比如同一个官能团的峰,在一个样品里吸收强度是0.5,在另一个样品里因为厚度不同变成了0.8,但这两个样品里的官能团相对含量可能完全一样。归一化的目的就是消除这种由样品量差异带来的绝对强度影响,让谱图对比集中在“峰形”和“相对峰强比”上。
最常见的归一化是“最大峰归一化”,也就是找到光谱里的最大吸光度峰,把所有数据除以这个最大值,让最大峰变成1。在Origin里操作是这样的:先复制一列原始吸光度数据,然后在空列里用公式Col(吸光度列) / max(Col(吸光度列)),就能得到归一化结果。如果你只想要某个特定波数范围(比如1000-1800 cm⁻¹指纹区)内的最大峰做归一化,可以先对数据用Data Filter或直接画图后用“Data Selector”工具选中该范围,再做归一化,避免某个不想比较的强峰主导了归一化系数。
要注意归一化不适合所有场景。如果你研究的本身就是绝对吸收强度,比如通过红外光谱测薄膜厚度变化,或者做定量分析,那绝不能做最大峰归一化,否则等于把一个重要维度人为抹掉了。
3. 光谱绘图的核心操作:从单条曲线到一整组叠图
3.1 一条基本光谱图怎么画才好看
在Origin里画FT-IR光谱,最常规的做法是选中波数列和信号列,点击菜单Plot → Line → Line(或者直接工具栏里的折线图图标)。绘图后,第一件事不是调颜色,而是先把坐标轴和图的属性设置对。双击坐标轴打开Axis对话框,在Scale选项卡里设置X轴范围,红外习惯上把X轴设为4000到400或4000到500,而且因为波数从高到低排列更符合习惯,你可以让X轴显示为“Reverse”即倒序,这样高波数就在左边。Y轴范围根据数据自动调整即可,但注意给谱图上方留一点空白,不要让峰顶贴到上边框。
坐标轴线条粗细也需要调整。默认的轴线和刻度线在论文里显得太细,适当提高到2 pt左右更清晰。刻度线要设置成“In”(向内),刻度标签字号一般为24 pt或26 pt(对应Word里小四或五号),字体选Arial或Times New Roman,中文环境里建议统一用Arial比较百搭。坐标轴标题也要规范:X轴标题“Wavenumber (cm⁻¹)”,如果期刊要求斜体单位也可以根据目标期刊格式调整;Y轴标题如果是吸光度就写“Absorbance (a.u.)”,如果是透过率就写“Transmittance (%)”。
完成基础图之后,记得把线宽调成1.5或2 pt,不要用默认的1 pt,否则打印出来太淡。之后对线型、配色和布局做统一美化,我会在第5章展开细说。
3.2 多光谱叠加图:宽格式数据一步出多线
多组红外谱图放一起比较是论文里最常见的图。如果你的数据表已经是宽格式(第一列波数,后面若干列信号),直接框选所有列,Origin会自动识别X列并给你画出多条曲线。如果画出来发现所有曲线挤在一起没法看,原因多半是样品的基线背景有差异。这时先别急着在图形上做截断轴或移动曲线,先回到数据预处理,把所有样品统一做基线校正和归一化,再重新绘图。
如果归一化后曲线仍有重叠不好辨认,可以采用“垂直平移”的方式来错开显示:复制一份归一化后的数据,然后在空列中用公式给每个样品加一个固定偏移量,比如Sample 1不加,Sample 2加0.3,Sample 3加0.6,得到一组新数据再绘图。这样出来的叠图就像阶梯一样一层层分开,常用于展示多个样品光谱的对比趋势。但要记住,这种平移只适合“展示用”,不能在图上标注真实吸光度数值,否则会误导读者。如果你需要保留定量信息,那就应该用3D堆叠图或分层排布的方式呈现,而不是简单加偏移量。
还有一个实用小技巧:叠图时如果曲线太多(超过5条),可以用Origin的“Group”功能把所有曲线组合起来统一管理。双击任意一条曲线打开Plot Details,左栏选中所有层,在Line选项卡里可以一次性设置所有曲线的线宽、颜色增量或符号样式。这样后期调整线宽或颜色主题,不用一条一条点。
3.3 坐标轴细节:倒转X轴、断轴和刻度策略
倒转X轴是FT-IR特有且必须会的操作。在图上的X轴空白处右键打开Axis对话框,在Scale选项卡中勾选“Reverse”选项,X轴就会自动变成从高波数到低波数。注意Reverse只是改了显示方向,不会改动数据本身。倒转后,刻度标签的排列方向一般不需要额外调整,但如果你发现刻度标签叠在一起,可以在Tick Labels选项卡里设置旋转角度或增量间隔,比如把X轴的增量设为500或1000。
断轴(Break)也是红外光谱里常用的手法。比如你想展示3600-3200 cm⁻¹范围的O-H/N-H伸缩振动区,又想把1700-1500 cm⁻¹的羰基和苯环区放一起,中间一大段没信息,这时就可以在坐标轴Scale选项卡里点击Break,把范围分成两段。断轴后Origin会自动给你显示断点符号,但有时断点符号位置和图的整体比例不协调,需要手动调一调。个人建议:如果期刊没有硬性要求,尽量少用断轴,因为很多审稿人不太喜欢这种“不连续”的呈现,宁愿分两个图或加子图。
3.4 局部放大图和内嵌子图的制作方法
当你需要在一张主图里同时展示全谱和某个特征峰的细节时,可以用Origin的“Inset”功能。先绘制好全谱图,然后使用工具栏里的“Magnify”工具或Layer Contents创建新的图层,把放大的数据范围放到子图层里,再将子图层叠加到主图右上角或左下角。操作路径是Graph → New Layer(Axes) → Linked Dimension,这样新建的图层会和原来的图层共享数据坐标,然后双击子图层坐标轴设置X轴范围为你关心的峰区范围。
内嵌子图的好处是不需要在正文里另起一个独立图,省版面又直观。但要注意子图里的字体大小必须和主图统一,子图面积不能太大遮挡关键峰。通常我建议子图占主图面积的20%-30%,边框线可以加粗一点,和主图做一个视觉区分。如果觉得Origin的图层叠放操作有点绕,一个更省事的方案是把全谱图导出后,在后期排版软件里插入局部放大图,但这样分辨率容易不一致,所以我会优先在Origin里做。
4. 曲线优化:让红外谱峰干净、漂亮、有说服力
4.1 平滑参数怎么选才能不损失峰形
很多人在Origin里做平滑都遇到过“怎么越磨越难看”的问题。其实关键就是平滑参数没有和原始数据的分辨率匹配。FT-IR数据点的间隔是光谱仪扫描范围除以数据点数,常见的是每1 cm⁻¹一个点,也有0.5 cm⁻¹甚至更密的。SG平滑的窗口点数必须根据这个数据密度来定:数据点越密,窗口可以相对大一点;数据点越疏,窗口应小一点。
对一个波数范围4000-400 cm⁻¹、间隔1 cm⁻¹的数据,整条谱约3600个点。窗口11意味着一次拟合11个点,大概覆盖10 cm⁻¹的波数范围,这个尺度相对于大多数半峰宽在20-50 cm⁻¹的红外峰来说是比较安全的,不会明显削峰。如果某个峰特别窄(比如半峰宽只有10 cm⁻¹),那窗口最好降到7甚至5。判断峰有没有受损,有一个很直接的方法:把平滑后的曲线和原始曲线叠加显示,看看峰的峰位有没有偏移、峰值有没有明显降低。如果峰值下降超过2%-5%,说明平滑过头了。
4.2 基线校正里锚点选择的“手感”从哪来
基线校正最让人头疼的就是选锚点。我自己的习惯是先用自动模式让Origin识别一次,然后把自动识别的峰区列表打开,逐个检查峰位是否合理。如果自动识别把不该当峰的小毛刺当成了峰,或者把该当峰的宽肩峰漏掉了,就在列表里手动添加或删除。关键原则是:基线锚点应选在“没有吸收的谷底位置”,也就是相邻吸收峰之间最低的区域。比如在1800-1600 cm⁻¹之间有羰基峰,那么锚点最好选在2000 cm⁻¹和1500 cm⁻¹附近这种没有明显吸收的区域。
基线校正中常犯的一个错误是“过度拟合基线”。本来直线能解决的事,非要用高阶多项式,结果基线贴着真实峰形走,扣完之后峰形变得很奇怪。判断方法是:扣完基线之后,整个光谱应该大致回到0基线附近,但峰不能出现明显的“负谷”——出现明显负谷基本就是基线拟合过头了。
4.3 峰位标注:让特征峰自己“说话”
标注特征峰是FT-IR论文里的例行工作,也是绘图美观度的重要加分项。在Origin里标注峰位有三种常见方式:
第一种是手动标注,用工具栏里的Text工具,在峰顶附近输入波数数字,再用Line或Arrow工具画一条指向峰顶的细线。这种方式最灵活,适合标注少量关键峰。
第二种是使用Peak Label工具。先激活图形,菜单Analysis → Peaks and Baseline → Peak Label,选择Enable Automatic Label,Origin会自动识别峰位置并在峰顶标注波数值。自动标注的优点是快,缺点是不智能,经常标出一堆噪声小峰或肩峰。我一般是自动标注后,在Plot Details里把不需要的标签删掉。
第三种是数据标注。提前在数据表里建好一列表格,写上要标注的波数和名称,然后用Label Control让标签跟随数据点。这种方式适合需要标注“C=O伸缩振动”、“N-H弯曲振动”这类详细归属信息的场景。
标注线建议用黑色细实线或虚线,长度占峰高的10%-15%就够了,不要画得太长。波数数字保留到小数点后0位或1位即可,比如“1635”或“1635.2”,不要超过仪器分辨率精度。要特别注意的是,不同仪器和不同分辨率下峰位会有几个波数的偏差,同一张图里的多个峰位标注务必和实际峰顶对齐,别拍脑袋写文献值,审稿人有时真会逐个核对。
4.4 峰面积计算和定量对比的可靠方法
很多红外定量工作需要用到峰面积,比如计算羰基指数、结晶度指数、氧化程度等等。在Origin里计算特定峰的峰面积,主流路线是使用Analysis → Peaks and Baseline → Peak Analyzer,也可以直接用Integration工具。Peak Analyzer向导式的操作会引导你:先选基线类型(直线、用户自定义等),然后框定积分范围,最后输出面积结果。如果你只想快速算一个简单面积,可以先把X轴范围缩放到目标峰附近,然后用菜单Gadgets → Integrate,工具会自动计算当前显示范围内的积分面积。
计算峰面积时有一个容易忽略的点:同一篇文章里所有样品积分范围必须统一。比如你计算1700 cm⁻¹附近的羰基峰面积,那么所有样品的积分范围都应该设定成同样的起止波数,比如从1720到1680 cm⁻¹。如果每个样品随手拖一下范围,得到的结果没有任何可比性。批量处理的话,我建议用Origin的Batch Processing功能,或者在Peak Analyzer里保存好模板,下个样品直接套用。
如果峰面积还需要进一步换算浓度或含量,请务必结合标曲。红外定量不像紫外那么“直白”,制样厚度、折射率变化都会干扰,能做ATR校正的机型尽量做ATR校正,否则定量结果最好不要轻易下结论。
5. 图形美化与出版级排版
5.1 用主题功能统一所有光谱图的风格
论文里多张图放在一起,最怕视觉风格不统一。Origin里有个主题(Theme)功能,可以把坐标轴、字体、线宽、颜色、图例等设置保存成一个模板,之后每张新图一键套用。在设置好一张满意的谱图后,右键空白处,选择Save Format as Theme,勾选要保存的属性(坐标轴刻度、字体、线宽等),给主题起个名字保存。之后做任何新图,在该图的空白处右键 → Apply Format → 选择你的主题即可。
做主题时建议把默认字体统一设成Arial,不要用Origin默认的“宋体”或“等线”,因为在不同电脑上打开,字体缺失会导致排版错乱。字号统一设置:坐标轴刻度标签24 pt,坐标轴标题26 pt,图例20-22 pt,这匹配国内大多数学校毕业论文的规定(小四或五号字)。如果你的目标期刊是ACS或RSC系列,建议下载他们官方提供的Origin主题模板,能省下大量后期调整时间。
5.2 颜色、线型和透明度的搭配建议
红外光谱叠图最常见的配色方案有几种。第一种是黑白灰方案,用黑色、灰色和虚线点线区分,适合打印版论文。第二种是色盲友好方案,比如蓝-橙-绿,或者使用Origin内置的“Color Universal Design”色板。第三种是期刊主题色,比如Nature系列的红色、蓝色搭配。无论用哪种,都要保证曲线之间分辨率足够,不要用深浅太接近的颜色。我自己的经验是:3条以内曲线用Black-Red-Blue经典组合,4-6条曲线用色相差异大的类别色,超过6条建议分组或换其他方式呈现。
线型方面,如果是黑白输出,可以用实线、短划线、点线相结合。Origin里设置曲线模式时,在Plot Details的Line选项卡可以同时设置颜色和线型。若2条曲线实在难以区分,还可以给数据点加上小符号(比如圆圈、方块),不过FT-IR这种高数据密度的谱图加符号会显得很乱,一般不加。
透明度这个功能经常被人忽视。当你有多组谱图重叠度高、互相遮挡严重时,给每条曲线设置10%-20%的透明度,可以让重叠区域也显示出层次。但注意导出tiff或pdf时,某些渲染器对透明度的支持会有问题,如果期刊要求高分辨率位图,尽量在屏幕上先确认导出效果,避免闭合区域变成一片黑。
5.3 图例处理:横向排列和边框清理
Origin默认生成的图例会放在右上角,还有一个边框。在红外光谱图里,这个边框经常会挡住谱峰,而且默认的竖向图例非常占地方。我的做法是:双击图例,在属性里把边框设为None,再把图例改成横向排列,放在图的顶部空白区域或底部。具体操作是选中图例文字,右键Properties,在“Rotate”或“Stack”选项里选择单行排列,或者在文本编辑模式下手动用“\l(1) ”加空格把多个条目排成一行。
图例里的文字也要精简。不要写“Sample 1 FTIR spectrum”这种冗长内容,直接用“Pristine”、“Modified”、“Recycled”这样的单词,或者“a、b、c”编号加说明。如果期刊要求图注单独写在figure caption里,有些图甚至可以不放图例,直接在图里用箭头和文字标注对应曲线,这样更干净。
5.4 导出出版级图片:规格和参数直接抄
Origin导图的输出质量直接决定论文版面质量。如果目标期刊是双栏排版,图片宽度通常是8.5 cm或17 cm(跨栏),对应的像素需求分别是约1000 px和2000 px以上。导出到图片前,先调整图形窗口的尺寸:在Graph页面空白处右键,选择Page Setup,把单位设为cm,宽度设为目标期刊要求(比如8.5 cm或17 cm),高度根据图的比例自动调整或手动输入。
导出路径是File → Export Graphs → Open Dialog。格式上,如果投稿系统接受矢量图就导出PDF或EPS,这是最理想的选择,缩放无损。如果只能传位图,那就导出TIFF格式,分辨率设置为300或600 dpi,色彩模式选灰度或RGB,压缩选LZW,这样可以避免文件过大。确保勾选“Embed Fonts”或“Convert Text to Curves”选项,防止字体缺失导致文字错乱。我自己常用的一套参数是:期刊宽度17 cm(双栏跨栏图),TIFF,600 dpi,LZW压缩,Color space选RGB,这样的图放到Word和投稿系统里清晰度都足够。
6. 完整实操案例:从原始TXT到一张能投稿的谱图
6.1 案例场景和数据背景
假设我拿到一个聚苯乙烯薄膜样品,需要用FT-IR证明它发生了氧化老化,测试范围4000-400 cm⁻¹,光谱仪导出了透过率数据。我的原始文件是“PS_aged.txt”,里面两列:第一列是波数,第二列是透过率。老板要求出三张对比图:老化样品和未老化样品的红外谱图叠图,以及特定区域(1800-1650 cm⁻¹)的羰基峰放大图,再计算羰基指数。
这个案例非常典型,几乎覆盖了前面所有要点:数据导入、纵坐标转换、基线校正、归一化、叠图、放大图、峰面积计算。下面我按实际操作顺序走一遍完整流程。
6.2 操作步骤清单:导入到出图一次跑通
第一步:把“PS_aged.txt”拖进Origin。在导入对话框里确认分隔符是Tab或逗号,Header Lines设置为0(如果文件第一行不是表头),数据预览里两列都识别成数值型(Numeric),然后点OK。把第一列重命名为“Wavenumber”,第二列重命名为“T%”。
第二步:复制数据。在空白列Col(C)右键Set Column Values,输入公式-log(Col(B)/100),把透过率转成吸光度。改名“Abs”。原始T%列保留不动,后面如果我们需要展示透过率图还可以用。
第三步:基线校正。选中A列和C列,画一条折线图,在图上用Analysis → Peaks and Baseline → Baseline,打开对话框后选Automatic,先让Origin识别一次,检查自动识别出的峰位是不是和PS特征峰(比如1601、1493、1452、1028、756、700 cm⁻¹)吻合。如果吻合,点击Subtract Baseline得到扣基线后的吸光度数据,把结果放到新列D,列标题命名“Abs_BaselineCorrected”。
第四步:最大峰归一化。由于做老化对比时样品厚度不完全一致,我把D列按最大峰归一化:新列E,公式Col(D)/max(Col(D)),这样最大峰变成1。未老化样品PS_unaged.txt重复同样的操作。
第五步:绘图。选中两个样品的A列和E列(波数列只选一次,两个E列都选上),点Plot → Line。这样得到两条曲线的叠图。双击X轴,Scale里设置From 4000 To 400,勾选Reverse。Y轴范围设为0到1.2左右,给峰顶留点空间。
第六步:局部放大。用Graph → New Layer(Axes) → Linked Dimension新建一个子图,在子图X轴Scale里设置范围1800-1650 cm⁻¹,Y轴范围自动。调整子图位置到主图的右下角空白区,去掉子图Y轴标题,只保留X轴标题。
第七步:标注关键峰。用Text工具在主图上标注“C=O ~1715 cm⁻¹”、“C-O ~1100 cm⁻¹”等老化特征峰,并在峰顶画细线指向。字体用Arial,字号24 pt。
第八步:导出。按前面说的Page Setup设宽度17 cm,File → Export Graphs导出TIFF,600 dpi,LZW压缩。这张图基本就能直接用了。
6.3 最终图形参数卡:直接抄作业
我把这套流程最后的参数整理成一个简表,方便你做自己的图时照着设置:
| 项目 | 推荐设置 |
|---|---|
| X轴范围 | 4000-400 cm⁻¹,开启Reverse |
| Y轴范围 | 根据数据调整,留10%空白 |
| 曲线线宽 | 1.5-2 pt |
| 坐标轴刻度线宽 | 2 pt |
| 坐标轴标签字号 | 24 pt,Arial |
| 坐标轴标题字号 | 26 pt,Arial |
| 图例位置 | 顶部或底部横向排列,无边框 |
| 峰位标注字号 | 22-24 pt |
| 导出分辨率 | TIFF,600 dpi |
| 导出宽度 | 8.5 cm 或 17 cm,按期刊要求 |
| 色彩模式 | RGB,必要时转灰度 |
这套参数不是死规矩,但你按这个来,至少不会出大问题。
7. 常见问题与排查技巧实录
7.1 高频问题速查表
这些是我帮别人处理数据时经常撞见的问题,挑几个典型列成表,每条都对应清晰的处理思路。
| 现象 | 可能原因 | 解决思路 |
|---|---|---|
| 导入TXT后数据变成一列或乱码 | 分隔符没选对,或文件里有非数字字符 | 用记事本打开确认分隔符;把表头行数设置正确;不要用分号做分隔符 |
| 光谱曲线毛刺明显 | 信噪比低,或样品太薄/太厚 | 做SG平滑,窗口从9开始试;检查样品厚度是否在合适范围 |
| 基线严重漂移 | 样品表面散射、光路有水汽 | 做基线校正;用ATR校正模式;必要时重测背景 |
| 峰位比文献值偏了好几个波数 | 仪器未校准或样品状态不同 | 不硬调到文献值,以实际峰位为准;同一仪器同一条件下比较才可靠 |
| 叠图曲线混在一起看不清 | 样品间基线背景差异大 | 先统一做基线校正和归一化;再考虑加垂直偏移展示 |
| 导出图片后字模糊 | 分辨率不够或字体未嵌入 | 用600 dpi导出TIFF;勾选Embed Fonts或转曲线 |
| 图上出现demo水印或无法保存 | 软件授权状态不完整 | 检查Origin授权是否为完整版,及时激活更新;不要使用来路不明的安装包 |
7.2 三个让我印象深刻的“翻车”经历
记得有一次我处理一组共混样品的红外数据,做了好几天的峰面积定量,结果发现两条平行样品的峰面积比差距特别大。排查了很久才发现是最初导入数据时,两个样品的X轴波数范围不对齐,一个从3999.5开始,另一个从4001开始,导致后续积分范围实际上错开了几个波数。解决办法是先用插值工具(Interpolate)把所有样品统一到同一个波数网格上,再做面积计算。
另一次是给别人指导绘图,发现他导出的TIFF在Word里显示正常,但投系统后清晰度骤降。后来发现是他在导出前没有把图形页面尺寸修改成目标宽度,默认的页面10英寸宽在压缩时被系统按像素重采样,600 dpi的意义大打折扣。从那之后我每次导出前都会确认Page Setup宽度。
还有一次是自动基线校正算出来的峰位和手动寻找的不一致。原因是自动识别峰功能把一对肩峰当成了一个宽峰,导致在肩峰区域基线贴近吸收带,校正后峰形变得很奇怪。那次之后我养成了习惯:自动识别完成后,一定把识别出的峰列表一个一个点开看,别全信AI。
7.3 一点私藏心得:数据处理的“少即是多”原则
做了这么多年红外数据处理,我最大的体会是:能少处理就少处理。平滑能不做就不做(除非噪声真的影响判读和定量),基线校正能用直线就不用多项式,归一化要明确自己目的再做。每一步数据处理本质上都在改变原始信息,处理得越多,离“真实样品”就越远。审稿人看到明显被过度平滑的谱图,也会质疑你的数据是否可靠。
我通常会在最终成图的同时,把每一步处理后的数据单独存成一个Origin项目文件(.opju),图层命名按“01_raw、02_Abs、03_baseline_sub、04_normalized、05_final_plot”这样的顺序排好。这样万一后面要换一种归一化方式,或者要重新计算某个峰的面积,不需要从头再来。最后再分享一个细节:图像里的峰位标注和坐标轴边界,在导出前记得用“Print Preview”预览一遍,有时界面上看着挺好的图,预览里会发现X轴标签被截掉一小截,这种问题在正式投稿前发现并修掉,比被审稿人指出要好得多。