☰
Origin绘制多条XRD叠图全流程:从数据导入到标准卡片与峰位标注
2026/10/28 11:18:56 网站建设 项目流程

简介:一份面向科研实验人员的Origin绘图实用文档,重点解决在一张图上绘制多条XRD谱线并添加标准谱图的问题。内容基于Origin 7.0,详细演示从Jade导出PDF卡片txt数据、导入Origin、复制数据、新建工作表、绘制线图并转换为竖线等完整流程,还涵盖多图层添加、谱线美化与坐标轴调整等关键操作。读者可跟随文档步骤完成实验数据可视化,尤其适合材料、化学等领域需要快速绘制XRD对比图谱的研究生和科研工作者。资源为单个doc文件,大小1.05MB,方便直接按步骤查阅。已有423人学习下载,操作讲解细致,并配有示例数据与常见问题说明,能有效减少摸索时间。

1. 把多条XRD谱线叠进一张Origin图,为什么总是画不出“标准谱图”的效果

你做材料或化学分析,手里多半攒了同一系列好几组样品的XRD原始数据,要在一张图里对比物相变化,还得把PDF卡片的标准峰位叠上去作参照。这个需求在实验室里天天有,但真动手时经常翻车:谱线挤成一团分不清谁是谁、峰位对不上、标准卡片不知道画成实线还是竖线。用Origin做多条XRD谱线的叠图并不难,难的是数据组织方式、Y轴偏移逻辑、卡片竖线画法和坐标轴排版这四件事没想透。这篇笔记把这套流程从导入原始文件讲到最后导出投稿级图片,照着走一遍,你会发现它其实是半小时内能收工的活。

2. 数据还没落进Origin就定成败:从原始文件到工作表的标准组织方式

2.1 用Import Wizard批量导入多条XRD原始数据,别被扩展名骗了

XRD仪器的导出格式五花八门,Rigaku给的是.raw或.asc,PANalytical给的是.xrdml或.csv,Bruker给的是.raw或.brml,老机器还会导出一堆.txt。新手最容易踩的坑就是“把文件直接拖进Origin”,结果要么只拖进一个文件,要么把表头的仪器参数当成了数据列。我一般在Origin里走File > Import > Import Wizard,一次把同批样品全部选中,批量导入。

Import Wizard里有三个参数要盯死。第一个是Header Lines,也就是表头行数。Rigaku的txt常见格式长这样:

RIGAKU MINIFLEX Measurement Condition Target : Cu Wavelength : 1.5406 A Step : 0.020 2Theta Intensity 10.000 125 10.020 132

这种文件前五行全是测试条件,目标靶、波长、步长,不是衍射数据。你要把Header Lines设成表格真正开始的前一行,比如上面这个文件是5。面板左下角有实时预览,调到“2Theta”变成列标题、之后每行出现两个数字就对了。

第二个是Delimiter,也就是分隔符。空格、Tab、逗号,不同导出配置都不一样。预览时如果看到所有数字挤在一列,多半就是分隔符选错了。XRD数据文件里空格和Tab混用很常见,选Delimited后勾上Space和Tab基本能通杀大多数txt、asc、csv。

第三个是Multiple Files的落地方式。Import Wizard会问你是每个文件建一个工作表,还是全部导入同一个工作表的不同列。我的选择是“new columns”,把不同样品的强度追加到当前工作表的新列里。这样画图时一次框选所有Y列就是一张叠图,不用再费劲合并。导入后做两件事:第一,确认第一列是2θ,右键Set As > X;第二,把其余强度列都设为Y。顺便把列名改成样品编号,比如Si-1、Si-2、Al2O3-3,后面图例会直接读列名,省掉手动改图例的工夫。

2.2 归一化处理:叠图前先统一强度口径

XRD叠图的核心目的是比较峰位和峰形,但不同样品测试时间、狭缝宽度、样品量不一样,绝对强度可能差一个数量级——一个主峰8000计数,另一个只有800计数。如果直接把原始强度画在一起,弱信号会被压成贴着横轴的一条线。所以叠图之前,我一般先做归一化:把每个样品的最大峰强度统一成100,只保留相对峰形。

做法是在工作表里新建几列,用列的右键菜单Set Column Values输入归一化公式:

// 假设A列是2θ,B列是样品1的原始强度,C列是归一化后的结果 // 用每个样品的最大值做分母,输出范围是0到100 col(C) = col(B) / max(col(B)) * 100;

这段代码的逻辑很直白:max(col(B))取整列最大值,每个原始值除以最大值再乘100,得到相对强度。这么处理后,后续做Y轴偏移时,偏移量可以直接用“主峰高度的百分之多少”来估算,不用再去记每个样品的绝对计数。注意别把原始列覆盖掉,归一化结果另存新列,后面想改背底处理时还有后悔药。

还要泼一盆冷水:要不要扣背底?如果你只做物相鉴定和峰位对比,我不建议扣。扣背底经常会把低角度的弱峰背景压出假峰,反而误导判断。背底扣除是结晶度计算或结构精修才需要正经做的活,日常叠图用归一化就够。

2.3 标准卡片数据怎么进Origin:从PDF卡片到可绘图的2θ-强度表

标准谱图不是从数据库网站下载一张图拖进Origin,你要拿到的是PDF卡片(ICDD PDF-2/PDF-4)里的峰位列表。不少卡片库导出的是d值和I/I0,你需要根据实验用的靶材波长把d值换算成2θ。Cu靶Kα波长是1.5406 Å,Co靶是1.7902 Å,同一张卡片在两种靶下的峰位能差好几度。换算靠布拉格定律:

2θ = 2 * arcsin(λ / (2*d))

这个公式在Excel或Origin计算列里都能实现,很多卡片库也自带“2θ for Cu Ka”导出选项。省事的做法是直接导出2θ和I/I0两列,存成txt再导入Origin。我习惯把标准卡片数据单独放在工作表末尾,列名带上卡片编号,比如PDF#00-000-0000_2θ,方便一眼认出是哪张卡。

标准卡片表结构建议这样:

Card_2theta Card_I/I0 hkl 27.80 100 (012) 31.02 44 (104) 38.43 89 (110)

Card_2theta设为X,Card_I/I0设为Y,hkl列不参与绘图,只在后面做峰位标注时用。记住:卡片强度列不是连续谱线,它是一组离散竖线的顶点,后面画图时要用符号样式把它展示成标准卡片的条状谱,这一步放在第4章细讲。数据底子打好了,后面所有操作都不会因为“列不对、强度乱”而返工。

3. 一张图叠多条XRD谱线:三种画法,从省事到精细

3.1 最快的方法:Plot Setup里勾选多条Y列,共享一条X轴

数据表整理好之后,最简单粗暴的是选中所有列直接画图。选中A列到E列,菜单Plot > Line或者Line+Symbol,Origin会自动生成一个包含多条曲线的图层。这里走的是多曲线绘图模式,所有曲线共享同一个X轴,2θ位置天然对齐。第一次出图时曲线通常全叠在一起,因为还没做Y方向偏移,这不奇怪,只是给后续调整留空间。

这个方法适用于样品数少、强度接近、峰位不重叠的快速检查。我经常用它先扫一眼:把多个样品叠在一起,看主峰位是不是在同一位置,哪些样品需要单独处理。另一个入口是Plot > Plot Setup,左侧选工作表,把多个Y列添加到右侧图层列表。它的优势是可以指定每条曲线的图层顺序,先加的在下层、后加的在上层。

用Plot Setup时有个细节:X列一定要明确指定工作表的2θ列,否则Origin可能给每条曲线配上各自的X列。很多新手把每个样品存成了独立工作表,每个表里都有各自的2θ列,框选绘图后画出来几条X范围不一致的曲线,峰位在图上相互错位,看着像样品出了问题,其实只是X列没对齐。这种问题排查起来特别玄学,从图上看不出任何明显错误,只有打开Plot Details逐个看数据源才能发现。

3.2 正规军画法:Y轴偏移制造“层叠”效果,XRD叠图的标准操作

绝大多数论文里的XRD叠图都是几条谱线在Y方向依次错开,像楼梯一样上下排布。这种图不是把每组数据画到不同子图,而是在同一个坐标系里垂直平移。为什么可以平移?因为XRD的绝对强度本身没有标准意义,测试时间、样品量、狭缝宽度都会让强度成倍变化,所以论文里常写“Intensity (a.u.)”,曲线任意上下平移并不会造成误导。

Y轴偏移有两种实现路子。第一种是手动偏移,直接改数据列。如果你已经在2.2节做过归一化,那偏移量非常好控制:

// 样品2的归一化强度在C列,偏移后结果存到G列 // 偏移量80表示样品2的基线抬到样品1主峰高度的80% col(G) = col(C) + 80; // 样品3在D列,偏移量翻倍,存到H列 col(H) = col(D) + 160;

为什么偏移量选80和160?因为归一化后每个样品最强峰是100,偏移80意味着相邻两条谱线的层间距约等于主峰高度的80%,视觉上既不会压住下一条谱线的峰头,又不会让层与层之间留白太大。具体数值要看你的谱图密度,我一般从最大强度的60%起试,觉得挤了就加到100%,觉得疏了就降到50%。标准是相邻谱线的峰头互不遮压、层间距均匀。

第二种是自动偏移,用Origin的Stack功能。选中图层里的曲线,打开Plot Details,或者右键数据选择Offset/Auto Stack。它原理和手动加常数一样,只是Origin根据当前曲线的最大值自动计算等差偏移量,速度很快。但自动Stack算出来的间距是齐刷刷的等差数列,有时候两个样品的峰头恰好错层重叠,视觉层次不如手动调整可控。所以出图时我更偏向手动偏移,自动Stack只用来快速预览效果。

偏移之后的Y轴数值已经不是真实强度,这在发表时没问题,但你要处理一下坐标轴:要么保留原始刻度但把Y轴标题写成“Intensity (a.u.)”,在正文或图注里说明“Curves are vertically shifted for clarity”。这句英文说明是材料类期刊审稿人默许的标准说法,建议养成习惯加上。

3.3 需要上下排列的XRD对比:Merge多图层操作

有些场景不适合把谱线叠在一起:比如三个样品的扫描范围分别是10°到50°、20°到60°、30°到80°,强行用一个X轴会让谱线比例失衡;又比如你要把样品谱线和标准卡片谱上下对照,而不是叠加。这时候用多图层合并(Merge)更合适。

操作流程是:先分别给每个样品单独画一张XRD图,每张图里只有一条谱线,或者一条谱线加一组标准卡竖线。然后按住Ctrl选中所有图窗,菜单Graph > Merge Graph Windows。弹出对话框后决定排列方式,是“一行N列”还是“N行一列”。

XRD对比我通常用多行一列,从上到下排,共用X轴,纵向对齐峰位最直观。在Merge对话框里把Rows设成样品数、Columns设成1,Horizontal Gap和Vertical Gap设一点间距,最后勾选Same Axes让所有图层X轴范围一致。合并完成后,各子图间距已经统一,但你要手动点开每层图层的Y轴,把中间几行的Y轴刻度数字删掉,只保留最下面一行,否则每层都带一排Y轴数字,图面会非常乱。

Merge和Y偏移的本质区别:Merge是多个独立坐标系排列在同一画布上,Y偏移是同一坐标系内平移数据。前者适合峰位跨度过大、强度体系不一致的极端样本,后者适合常规物相对比。两种风格在期刊上都常见,但同一条谱线能不能直接叠,取决于它是不是同一测角仪同一扫描条件下测出来的数据,这个前提要交代清楚。

4. 把标准谱图画上去:峰位竖线、卡片标注与坐标轴排版

4.1 标准卡片的竖线怎么画:用符号样式模拟JCPDS卡片谱

先把2.3节那张卡片表加进当前图。做法是选中图窗,菜单Graph > Layer Contents,在列表里把卡片的X列和Y列加入右侧目标图层。这里有两个选择:加入当前图层,或新建一个图层。我一般加进同一个图层,但要单独设置绘制样式。

新加入的卡片数据默认以Line+Symbol显示,几乎就是一条普通折线,和样品谱线混在一起完全看不出“标准卡片”的样子。你需要双击卡片那条曲线,打开Plot Details对话框,进Symbol标签页:

  • Symbol Style选“Line”或者类似“Single Short Vertical Line”的样式,不同Origin版本叫法略有差异,本质就是一根竖线段;
  • Size调到2到4,决定竖线高度;
  • Connect设为“No Connect”,避免相邻峰位之间的点被连成折线;
  • Symbol Color用黑色或深灰,避免抢过样品谱线。

设置完,卡片数据就会以一根根竖线显示,正好对应PDF卡片图谱里的条状谱。如果你的Origin版本符号列表里找不到竖线样式,还有一个替补方案:用Column/Bar图把卡片数据画成极细的柱状条。但柱状条宽度不好控制,容易变成小方块,效果不如竖线符号干净。

卡片峰多的时候,比如两个物相叠加,竖线会非常密集。这时我建议新建独立图层放卡片线,并把它置于样品图层之上。在Layer Contents中新建图层后,把X轴关联(X Axis Link)设为与主图层相同,这样缩放图像时卡片竖线始终和样品谱线对齐,不会错位。很多第一次用的人会把这一步漏掉,结果一放大图片卡片线就跑偏,怎么看怎么别扭。

4.2 峰位标注:Origin放大局部图后,一格一个注释

标准卡片竖线画上去后,你得在样品谱线上标注几个关键峰对应的2θ值或晶面指数(hkl)。Origin里最朴素可靠的操作是:先用Zoom In放大框选某个峰,再用Data Reader点峰顶读出2θ,按Esc退出,最后用Text工具在峰顶上方写文本。

标注内容怎么选?衍射峰多的物相不用每个峰都标,标特征峰就行:最强峰、高角度分裂双峰、论文里重点讨论的那个峰。文本内容一般写“38.4°”或“(111)”,晶面指数要斜体,字体我通常设成Times New Roman,字号比正文小一号。小技巧:按住Ctrl拖动标注框可以微调位置,比鼠标直接拖更精准。

如果你嫌手动挨个读取慢,可以试Analysis > Peaks and Baseline > Peak Analyzer的自动寻峰功能。但提醒一句:XRD自动寻峰经常把Kα2伴峰或背景噪声识别成衍射峰,尤其背底不平的时候,误报率很高。它把峰位给你标出来了,你还要逐个核对是不是真实衍射峰。相比之下手动标注虽然慢,但每个峰位都经过人眼判断,安全感高。我个人只对背底特别平、峰形特别尖的样品用自动寻峰,日常叠图全部手动。

还有一种常用做法:直接在标准卡片竖线顶端写hkl。这样读者看竖线就知道哪根对应哪个晶面,是很多材料论文的标准样式。在Layer Contents把卡片数据加入后,打开Plot Details,找到Labels标签页,勾选Enable Labels,Label Form选“列”,指定到hkl列,再调一下字体和偏移量。注意卡片竖线太密时不要开启全部标注,只选两三个最强峰对应的hkl,图面更干净。

4.3 排版三件套:字体、刻度、导出尺寸一次设对

XRD图排版有一套我常年用的参数区间,直接抄就行:

设置项参数建议为什么这么设
曲线线宽1.0到1.5 pt小于1.0导出后泛灰,大于1.5会压住邻峰
X轴主刻度5°或10°宽范围用10°,局部放大用5°以下
X轴次刻度1°或2°配合主刻度标出细分
X轴范围数据起止两端各留0.5°到1°避免首峰和末峰顶到边框
字体Times New Roman或Arial2θ斜体,数字正体
图例放空白区,必要时横向分两列避免遮挡曲线和卡片竖线
导出宽度单栏8.2到9 cm,双栏17到18 cm期刊模板的硬性要求
分辨率300 dpi起步,600 dpi更稳缩印后峰形不模糊

导出这一步,很多人直接在图形窗口截图或者Ctrl+C复制到Word,图一旦放大就露馅。正确姿势是File > Export Graphs,然后在对话框里指定图片格式、尺寸和DPI。如果你要投Word,导出EMF矢量格式是最稳的;投LaTeX或直接提交图片,用TIFF加600 dpi。

导出后把图片缩小到印刷宽度再看一遍峰位是否清晰可辨。线条泛灰,回到Origin把线宽从1.0提到1.5;文字变糊,把DPI从300改成600。这步是我每次出图前必做的最终检查,大量返工都是在这里提前拦下来的。

5. 六个XRD叠图常见问题:现象、原因与补救方法

这一章单独拿出来写,是因为上面流程里每一步都有对应的高频翻车点。以下问题在我自己用Origin 2021、2024以及帮学生改图时反复出现,按“现象 → 原因 → 解决”整理成六条。你对照着排查,比自己瞎试快得多。

5.1 导入后只有一列数据,2θ和强度全挤在一起

现象:用Import Wizard导入txt后,工作表里只有一列,每个单元格里塞着两个数字,没法画图。

原因:分隔符没选对。很多XRD文本文件用Tab缩进,但有些老仪器导出的是多个空格,Origin的自动检测偶尔会失灵,把“2θ 100”这种两列数据当成了一个字符串。

解决:重新走一遍Import Wizard,在Delimiter区域勾上Space和Tab。如果文件是固定宽度格式,就换成Fixed Width并手动拖动分隔线。预览窗口看到2θ和Intensity分列后再点Finish。这个操作看似基础,但我见过不少人在这一步卡了半小时,以为是文件损坏。

5.2 图里多出一条左上到右下的斜线,把数据串了起来

现象:画完图,除了正常谱线以外,还有一条斜线从图左上角串到右下角,把所有谱线连在一起。

原因:数据表里某个单元格是空值或文本,Origin自动把断点用直线连接了,形成一条贯穿整个图的斜线。另一个常见原因是X列没设对,把某个强度列当成了X,画出来自然是一团乱麻。

解决:先放大定位那条斜线经过的数据点,回工作表查那一行。如果是空值,用相邻值补上或手工删掉再重画;如果X列有问题,右键把真正的2θ列设为X。重画之后如果斜线消失,说明就是数据源的问题,不是Origin的Bug。

5.3 给三条曲线都加了偏移量,图上却仍然叠在底部

现象:按第3.2节方法给三列数据各加了80、160的偏移量,结果图上三条线还是全部挤在图底部,偏移完全没生效。

原因:最常见的是加完偏移公式后,绘图时仍然选了原始列,不是偏移后的新列。也遇到过有人在原始列上反复执行col(B)=col(B)+100,执行一次加一次,数据越加越大,图面完全飘出可视范围。

解决:检查Layer Contents里每条曲线对应的数据列是否是加了偏移的新列;加偏移时坚持新建输出列,保留原始列不动。另外,执行完Set Column Values后,图形窗口不会自动刷新,你需要右键图窗选择Refresh,或者干脆重新绘图。这个刷新机制常被忽略,很多人以为公式写错了,其实只是图没更新。

5.4 标准卡片竖线在图上“戳”得太高或太低

现象:卡片竖线加入图层后,要么比样品峰矮一大截、只有地板上一小段,要么比样品峰高出一大截,把整个谱图都盖住了。

原因:卡片强度I/I0是以最强峰为100的相对值,样品谱线归一化后最大也是100,两者数量级一致。但因为Y轴范围是由样品谱线和偏移量共同决定的,卡片竖线的相对高度自然不受控制,有时候0.5倍倍率正好,有时候要拉到0.2倍。

解决:直接调整卡片数据列的数值倍率。比如想让卡片最强峰比样品主峰矮一截,执行:

// 假设卡片强度列是F列,整体乘0.6,竖线比样品峰低一截 col(F) = col(F) * 0.6;

这样做的逻辑是整体缩放所有卡片竖线的高度,峰与峰的相对比例不变,只是整组线变矮。缩放系数我一般试两三次,目标是卡片最强竖线的高度约为样品主峰高度的60%到80%。这个比例视觉上最舒服,既能看到卡片峰位,又不会喧宾夺主。

5.5 导出PDF后字体乱码,2θ的θ字符变成空白

现象:在Origin里显示正常的希腊字母θ、下标数字,导出PDF后变成空白或乱码,尤其发Word打印时更明显。

原因:用中文字体和特殊字符的组合,PDF渲染时找不到对应字形。Origin里中文宋体显示没问题,但导出矢量PDF时,某些字符的Unicode映射会丢失。

解决:统一把图内文字改成Times New Roman,希腊字母θ在Origin文本编辑状态下从Symbol字体里插入,不要从输入法直接打字。导出PDF时勾选“PDF (Vector)”而不是“PDF (Raster)”,能保住字形。如果文字里混了中文,把中文部分单独设置成宋体,不要整段用Times New Roman,否则中文变成方框。这个问题在Windows系统下最频发,Mac版Origin反而少见。

5.6 图例显示不全,多条曲线标签挤成一行

现象:画完六条谱线,图例只显示三四行,或者所有条目挤在一行里重叠得无法辨认。

原因:Origin图例默认是单栏排列,条目多了以后会自动截断或者堆在一行,图例框高度不够时尾部条目会被遮住。

解决:双击图例框,在Object Properties里把图例框高度拉大;或者进文本编辑模式,在每条样例文字后按Shift+Enter手动换行。样品名特别长时,我会干脆放弃自动图例,用文本框手动排成两列对齐的纯文本。

关于图例横向排列:Origin 2021之后的版本在图例右键菜单里直接有“Horizontal Grid”或横向排列选项,勾选后会变成多列布局。如果你还在用旧版本,就手动建文本框排两列,效果一样。图例放哪也有讲究:放在谱线最稀疏的空白区,通常是低角度区或者两条谱线之间的空隙,别覆盖任何峰头。

6. 把这套流程固化成模板:新数据十分钟出图

6.1 把当前图窗存成模板:一次设置,万次复用

当你把第3章、第4章的所有设置都调好——曲线颜色、偏移间距、卡片竖线样式、字体、坐标轴范围、导出尺寸——这张图窗就是你未来所有XRD叠图的原型。在菜单File > Save Template As里把它存成模板文件,命名比如XRD_Multi_Curve.otpu。模板会保留所有绘图样式和图层的属性,但不会保留具体数据。

下次拿到新样品数据,先按第2章的流程导入并归一化,然后File > New > From Template选择这个模板,再把新数据列拖进图窗的Layer Contents。你会看到曲线自动套用模板的线型、颜色和坐标轴,卡片竖线样式也在,只需要重新调一下偏移量和卡片倍率。这一套下来,从原始数据到出图,十分钟是真实水平。

6.2 一个可选的LabTalk小脚本:批量出图

如果你样品批次特别多,比如一次要处理二十组数据,还可以用Origin的命令窗口跑一个小脚本。LabTalk是Origin内置的脚本语言,下面的示例能完成“批量导入txt文件并套用模板绘图”:

// 批量导入data文件夹下所有txt,每个文件生成一个新工作表 import "./data/*.txt" mode:=new; // 将当前工作表的第2到第5列按模板绘图 plotxy iy:=(2:5) ogl:=[<new template:=XRD_Multi_Curve.otpu>];

这个脚本的mode:=new是导入新工作表,避免覆盖已有数据;plotxy里的iy:=(2:5)指定Y列范围,前提是每个工作表的2到5列恰好是强度数据。脚本的局限在于它不会自动做归一化和偏移计算,所以更适合数据已经整理好、只需要快速套模板出图的场景。愿意折腾脚本的熟手可以再往上加归一化和偏移的循环,但日常做图没必要一步到位,脚本跑一半出错反而更麻烦。

我自己的习惯是每攒一批常用物相的卡片数据就更新一次模板,把字体、线宽、导出尺寸固化在里面。新样品来了以后,先花两分钟确认数据表归一化,再拖进模板图窗,最后导出前缩小到印刷宽度看一遍峰位有没有对齐。这套流程用下来,XRD叠图从原来的“忙一上午”变成“喝杯咖啡的工夫”。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询