首页 / 资讯中心 / 文章详情

Origin Pro 2023绘制Piper三线图:水化学当量换算与实操指南

Origin Pro 2023绘制Piper三线图:水化学当量换算与实操指南 ★ FEATURED ARTICLE
1. 为什么水文地质人绕不开Piper三线图干水文地质这行的人只要涉及到水化学数据分析Piper三线图几乎是绕不过去的一道坎。不管是做地下水类型划分、判断水岩相互作用方向还是分析不同含水层之间的水力联系这张由两个三角形加一个菱形拼起来的图件都是最直观、最有说服力的表达工具。我接触过的项目中但凡涉及区域水化学特征分析、水源地评价、矿井涌水来源判别评审专家第一眼看的就是这张图。但现实情况是很多人拿到水质全分析报告之后面对一堆毫克每升的离子数据就犯了难。有人用Excel硬画画出来的三角形比例不对、菱形歪歪扭扭有人找别人帮忙画结果数据一多就排不上队还有人用一些在线工具导出图片分辨率低得没法放进报告。更常见的情况是辛辛苦苦画出来一张图结果发现坐标轴刻度标错了或者当量比没换算就直接把质量浓度填进去了整张图等于白做。这篇内容就是来解决这个问题的。我用Origin Pro 2023从头到尾走一遍Piper三线图的绘制流程把每一步的参数设置、数据换算、排版技巧都拆开讲清楚。不管你是刚入行的水文地质技术员还是做了多年水化学分析但一直没自己动手画过图的工程师跟着走一遍都能独立完成。文章里会附上我一直在用的数据模板结构你拿到自己的水质数据往里填就行。核心关键词就三个Piper三线图、水化学当量换算、Origin绘图这三个东西串起来就是一篇完整的实操记录。需要提前说明的是Origin本身没有内置Piper图的现成模板网上流传的一些所谓“一键出图”的插件我也试过几个要么版本不兼容要么菱形区域的投影逻辑有问题。所以最稳妥的办法还是自己搭一个绘图框架搭好之后存成模板以后换数据直接套用五分钟出一张图不是夸张。2. 动手之前必须搞清楚的底层逻辑2.1 Piper图的三块区域到底在表达什么很多人画Piper图是照着别人的图依葫芦画瓢但如果不理解每个区域代表什么画出来之后连自己都不敢确认对不对。我先把这三块区域的逻辑捋一遍。左下角的三角形是阳离子三角图三个顶点分别代表钙、镁、钠钾三种阳离子的当量百分比。注意是当量百分比不是质量浓度百分比。这一点是新手最容易翻车的地方。比如你测出来钙离子质量浓度是80毫克每升镁离子是24毫克每升钠离子是46毫克每升你不能直接拿80、24、46去算比例得先除以各自的当量质量换算成毫当量每升之后再算百分比。钙的当量质量是20镁是12.15钠是23钾是39.1。这个换算步骤在后面实操部分会详细展开。右下角的三角形是阴离子三角图三个顶点对应碳酸氢根加碳酸根、硫酸根、氯离子。同样也是当量百分比。碳酸氢根的当量质量是61碳酸根是30硫酸根是48氯离子是35.45。中间那个菱形是综合投影区它把左右两个三角形里的信息通过特定的投影规则汇聚到一起形成九个分区分别对应不同的水化学类型。比如菱形左下角区域代表碳酸氢钙型水右上角代表氯化钠型水中间偏上代表硫酸钙型水等等。菱形区域的投影逻辑是从阳离子三角形中某个点出发沿着与碳酸根-硫酸根边平行的方向往菱形里画线从阴离子三角形中对应点出发沿着与钙-镁边平行的方向往菱形里画线两条线的交点就是菱形中的位置。这个投影规则听起来绕但你在Origin里把坐标变换公式设好之后它就是自动完成的。2.2 为什么非得用当量百分比而不是质量浓度这个问题我被问过不止一次。有人觉得我测出来的就是质量浓度直接算百分比不是更省事吗答案是不行而且差得很远。举个具体的例子。假设某水样中钙离子质量浓度是40毫克每升钠离子也是40毫克每升。从质量上看两者相等各占一半。但换算成当量之后钙是40除以20等于2毫当量每升钠是40除以23约等于1.74毫当量每升。钙的当量占比就变成了约53.5%钠是46.5%。这个差异在Piper图上会直接改变点的位置进而影响水化学类型的判定。更深层的原因是Piper图的本质是反映水中离子的电荷平衡关系而不是质量关系。水化学分析中各种离子是以带电粒子的形式存在的它们参与反应、迁移、交换靠的是电荷数而不是质量数。所以用当量百分比才能真实反映水化学特征。这一点在绘制之前必须刻在脑子里否则后面所有工作都是白费。2.3 Origin Pro 2023相比其他工具的取舍考量市面上能画Piper图的工具不少我大致列一下我试过的几种方案和它们的优缺点方便你判断自己该用哪个。工具方案优势短板适用场景Origin Pro 2023自建模板完全可控出图质量高可批量套用初次搭建需要花时间长期做水化学分析需要反复出图Excel手动绘制门槛低人人都有三角形比例难精确控制菱形投影易出错临时应急数据量极少专业水化学软件内置模板一键出图软件费用高导出格式受限有预算、追求效率的团队在线绘图工具免费操作简单分辨率低数据安全性存疑非正式场合快速预览我最终选择Origin Pro 2023自建模板核心原因是三个第一Origin的坐标轴控制和图层管理能力足够强能把三个区域精确拼合第二出图是矢量格式放进报告里放大不糊第三模板建好之后换一批数据只需要替换工作表中的数值图形自动更新批量处理几十个水样也不费劲。代价就是初次搭建需要耐心但这是一次性投入后面全是收益。3. 数据准备与当量换算的完整操作3.1 原始数据表的规范结构在打开Origin之前先把数据整理成规范的结构。我用的模板包含以下列样品编号、钙离子质量浓度、镁离子质量浓度、钠离子质量浓度、钾离子质量浓度、碳酸氢根质量浓度、碳酸根质量浓度、硫酸根质量浓度、氯离子质量浓度。单位统一用毫克每升。如果你的报告里还有总溶解固体、pH值、水温这些参数可以另起一列放在后面不影响Piper图绘制但方便后续做其他分析。这里有个细节要注意碳酸根和碳酸氢根要分开列。有些水质报告里把这两个合并成一项叫“总碱度”或者“碳酸氢根及碳酸根”如果是这种情况你需要根据pH值大致拆分一下或者直接按碳酸氢根处理当中性水pH在6到8之间时碳酸根占比通常很低合并处理误差可接受。但如果有单独的碳酸根数据一定要分开填因为两者的当量质量不同合并计算会引入偏差。提示数据表里不要有合并单元格不要有中文单位混在数值里每一列的数据类型保持一致。Origin读取的时候对格式比较敏感一个单元格里出现“mg/L”这样的文字整列都会被识别为文本后面就没法计算了。3.2 当量换算的公式与实操数据填好之后在Origin的工作表里新增几列用来存放当量浓度。具体操作是右键点击工作表空白列标题选择“Add New Column”然后给新列命名。我一般会加八列钙当量、镁当量、钠钾当量、碳酸氢根当量、碳酸根当量、硫酸根当量、氯当量、阳离子当量总和、阴离子当量总和。实际上加起来是九列但你可以按自己的习惯来。换算公式在Origin里用Set Column Values功能实现。选中钙当量那一列右键选择“Set Column Values”在表达式框里输入Col(B)/20.04假设B列是钙离子质量浓度。这里20.04是钙的当量质量精确一点用20.04比用20更稳妥。镁用Col(C)/12.15钠钾合并的话用(Col(D)Col(E))/23钠和钾的当量质量接近合并计算时统一用23问题不大如果要求更精确可以分别除以23和39.1再相加。碳酸氢根用Col(F)/61.02碳酸根用Col(G)/30硫酸根用Col(H)/48.03氯用Col(I)/35.45。阳离子当量总和就是钙当量加镁当量加钠钾当量阴离子当量总和就是碳酸氢根当量加碳酸根当量加硫酸根当量加氯当量。这两个总和列在后面计算百分比的时候要用到。这里分享一个我踩过的坑Origin的Set Column Values里列号是用A、B、C这样的字母表示的但如果你插入或删除了列列号会变之前写好的公式就会引用错列。所以我的做法是先把所有原始数据列排好确定不再增删了再统一加计算列。如果中途确实要调整记得回头检查一遍所有公式的引用是否正确。3.3 当量百分比的最终计算有了当量浓度接下来算百分比。阳离子三角图需要三个值钙百分比、镁百分比、钠钾百分比。钙百分比等于钙当量除以阳离子当量总和再乘以100镁和钠钾同理。阴离子那边算碳酸氢根加碳酸根百分比、硫酸根百分比、氯百分比分母是阴离子当量总和。这里有一个数据质量检查的环节不能省。把阳离子当量总和和阴离子当量总和分别算出来之后两者应该大致相等误差一般在5%以内算正常。如果偏差超过10%说明数据本身有问题可能是某个离子测错了或者有未检出的重要离子比如铁、锰含量高的时候会影响电荷平衡。这种情况下画出来的Piper图虽然也能出图但菱形区域的位置会偏移结论就不可靠了。我一般会在工作表里加一列“电荷平衡误差百分比”公式是(阳离子总和-阴离子总和)/(阳离子总和阴离子总和)*100绝对值超过5%的样品标红回头核查原始报告。4. 在Origin中搭建Piper三线图框架4.1 三个图层的布局规划Origin里画Piper图的核心思路是用三个独立的图层分别画阳离子三角形、阴离子三角形和菱形然后通过坐标轴的位置和范围设置把它们拼在一起。听起来简单但图层之间的对齐和比例关系需要精确控制。我的做法是新建一个空白图形窗口然后依次添加三个图层。第一个图层放阳离子三角形位置设在左下第二个图层放阴离子三角形位置设在右下第三个图层放菱形位置设在正上方居中。三个图层的宽度要一致两个三角形的底边要在同一条水平线上菱形的高度和宽度比例要符合等边菱形的几何关系。具体到数值假设整个图件的绘图区域宽度设为100个单位那么每个三角形的底边宽度大约占45个单位两个三角形之间留10个单位的间隙。三角形的高度按等边三角形算底边45个单位对应的高度约39个单位。菱形区域的宽度和三角形底边一致高度也约39个单位。这些数值不是死的你可以根据自己的排版需要微调但比例关系要保持否则图件看起来会变形。注意Origin的图层位置参数用的是百分比或者自定义坐标在图层管理对话框里设置的时候建议先用“Layer Management”把所有图层的单位统一成“percent of page”或者“custom”不要混用否则后面调整起来很乱。4.2 三角形坐标系的变换方法这是整个绘图过程中最考验理解的一步。Origin默认的坐标系是直角坐标系而三角形图需要的是三轴坐标系。怎么把三个当量百分比映射到三角形里的一个点上标准的做法是用重心坐标法。对于阳离子三角形三个顶点分别设为钙顶点左下、镁顶点右下、钠钾顶点顶部。一个水样的钙百分比为a、镁百分比为b、钠钾百分比为cabc100那么这个点在三角形中的直角坐标可以这样算横坐标等于b加上c的一半再乘以一个缩放系数纵坐标等于c乘以二分之根号三再乘以同样的缩放系数。这个公式的本质是把三轴坐标投影到二维平面上。在Origin里实现这个变换我是在工作表里直接算出每个样品的三角形内直角坐标然后用散点图把点画上去。具体来说阳离子三角形里横坐标列公式设为(镁百分比钠钾百分比/2)*0.45纵坐标列公式设为钠钾百分比*0.866*0.45。这里的0.45是缩放系数对应前面说的三角形底边宽度45个单位0.866是二分之根号三的近似值。阴离子三角形同理只是三个顶点的对应关系换成碳酸氢根加碳酸根、硫酸根、氯。这样算出来的坐标直接就是三角形内部的点位置画散点图的时候把坐标轴范围设成0到45横轴和0到39纵轴点就正好落在三角形区域内。三角形的边框线另外用直线工具或者绘图工具画上去或者用Origin的“Axis”设置把坐标轴隐藏手动添加三条边线。4.3 菱形区域的投影计算菱形区域的点位置计算稍微复杂一些但逻辑是清晰的。每个水样在菱形中对应一个点这个点的位置由阳离子三角形中的位置和阴离子三角形中的位置共同决定。投影规则是这样的从阳离子三角形中的点出发画一条与碳酸根-硫酸根边平行的线从阴离子三角形中的点出发画一条与钙-镁边平行的线两条线的交点就是菱形中的位置。在直角坐标系里这个交点可以通过解析几何算出来。我用的简化算法是设阳离子三角形中钠钾百分比为c阴离子三角形中氯加硫酸根百分比为d即非碳酸氢根部分那么菱形中的横坐标与(d-c)相关纵坐标与(cd)相关。具体的变换公式我在模板里已经固化成列公式了你不需要每次手推但理解这个逻辑有助于你在出图后判断点的位置是否合理。比如一个水样钠钾占比很高、氯离子占比也很高它的点应该落在菱形右上角区域如果你画出来落在左下角那肯定是公式引用错了。菱形区域的边框同样需要手动绘制。我一般用Origin的“Polygon”工具画一个菱形框四个顶点的坐标按几何关系算好填进去。菱形的四个顶点分别对应顶部钠钾100%且氯加硫酸根100%的极端情况、底部钙镁100%且碳酸氢根加碳酸根100%、左侧钙镁100%且氯加硫酸根100%、右侧钠钾100%且碳酸氢根加碳酸根100%。实际水样点都落在这个菱形内部。5. 图形美化与出图设置的实操细节5.1 坐标轴刻度和网格线的处理三个区域的坐标轴刻度需要统一风格。三角形区域的刻度一般标在两条斜边上从顶点到底边按百分比标注每20%一个刻度。Origin里可以通过“Tick Labels”设置来实现但三角形斜边上的刻度需要手动调整角度。我的做法是把坐标轴隐藏用“Line and Symbol”工具手动添加刻度线和标签虽然麻烦一点但效果最可控。菱形区域的刻度标注在四条边上同样按百分比。这里有个技巧菱形的刻度标签不需要全部标出来标关键节点就行比如20%、40%、60%、80%否则图面太密反而看不清。网格线建议用浅灰色细线不要用黑色实线否则会抢了数据点的视觉焦点。提示所有刻度标签的字体大小建议统一在8到10磅之间太小了打印出来看不清太大了图面显得拥挤。字体用Arial或者Times New Roman都可以全文保持一致就行。5.2 数据点的样式与分组显示如果你的数据来自不同含水层或者不同采样期次建议用不同颜色或形状的数据点来区分。Origin里可以在工作表里加一列“分组”列然后用“Grouped Scatter”功能按组着色。我一般用实心圆、实心方块、空心三角这几种形状颜色选对比度高的几种比如深蓝、暗红、墨绿打印成黑白也能区分。数据点的大小建议在6到8磅之间太小了看不见太大了互相遮挡。如果样品数量很多超过50个可以考虑把点的大小调到5磅左右或者用半透明填充避免重叠区域看不清密度分布。5.3 图例和标注的排版图例放在图件的右上角或者右下角空白区域不要压在数据点上。图例内容一般包括分组名称和对应的符号样式。如果图件要放进正式报告建议在图件下方加一行简短的图注说明数据来源和样品数量。菱形区域的九个水化学类型分区可以在图面上用细线分隔并在每个区域角落标注类型名称比如“碳酸氢钙型”“氯化钠型”等。标注字体用7到8磅颜色用深灰色不要用纯黑避免喧宾夺主。这些分区线在Origin里用直线工具画画好之后和菱形边框一起编组方便整体移动。6. 常见问题排查与我的避坑经验6.1 点跑到三角形外面去了是怎么回事这是最常见的问题十有八九是百分比算错了。检查两个地方第一三个百分比加起来是不是100如果不是说明当量换算或者求和公式有误第二坐标变换公式里的缩放系数是不是和坐标轴范围匹配比如你算坐标时用了0.45的系数但坐标轴范围设成了0到100点自然就跑到外面去了。还有一种可能是某个样品的某个离子浓度是负值或者空白导致计算出错回头检查原始数据。6.2 菱形里的点位置明显不对如果阳离子和阴离子三角形里的点看起来都正常但菱形里的点位置明显偏离预期重点检查投影公式的引用列是否正确。我遇到过的情况是插入新列之后菱形坐标公式还引用着旧的列号结果算出来的坐标全是错的。解决办法是重新打开Set Column Values对话框逐列核对公式里的列引用。另外菱形区域的坐标轴范围设置也要检查。菱形的横纵坐标范围和三角形的范围不一样如果坐标轴范围设错了点会挤在一角或者超出边界。6.3 出图分辨率不够怎么办Origin默认的图形导出分辨率是96dpi放进Word文档里看着还行但打印出来就糊了。导出的时候选择“File-Export Graphs”格式选EMF或者EPS矢量格式或者选TIFF/PNG但把分辨率设到300dpi以上。如果期刊或者报告有特殊要求按他们的要求来。我一般存两份一份EMF矢量图用于插入文档一份300dpi的PNG用于快速预览。6.4 常见问题速查表问题现象可能原因排查方法点落在三角形外部百分比之和不为100或坐标缩放系数不匹配检查当量换算和求和公式核对坐标轴范围菱形点位置异常投影公式引用列错误或坐标轴范围设置不当逐列核对Set Column Values中的列引用图形导出模糊导出分辨率过低或格式选择不当改用EMF/EPS矢量格式或提高dpi至300以上电荷平衡误差过大原始数据有误或存在未检出的重要离子计算电荷平衡误差百分比核查原始报告图层对齐不准图层位置单位不统一在Layer Management中统一所有图层的单位6.5 我踩过的几个坑第一个坑是当量质量用错。早期我图省事钙的当量质量直接用了20镁用了12钠用了23结果算出来的百分比和用精确值算的差了一点点。单个样品看不出来但几十个样品放在一起菱形区域的点整体偏移了一点评审的时候被指出来了。后来统一改用精确值钙20.04、镁12.15、硫酸根48.03、碳酸氢根61.02问题就没了。第二个坑是碳酸根和碳酸氢根合并处理。有一次拿到的报告里只有“总碱度”一项我按碳酸氢根全部折算结果那个水样pH偏碱性碳酸根实际占比不低导致阴离子三角形里的点位置偏了。后来遇到这种情况我会根据pH值估算碳酸根和碳酸氢根的比例再拆分虽然还是近似但比一刀切准确得多。第三个坑是模板复用的时候忘了改坐标轴范围。有一次样品数量少数据点集中在三角形的一个小角落我为了看清楚把坐标轴范围缩小了出图效果很好。下次换了一批数据忘了把坐标轴范围改回来结果一半的点跑到图外面去了。从那以后我在模板里固定了坐标轴范围不再随意调整需要局部放大就另存一个版本。7. 模板复用与批量出图的效率技巧模板建好之后日常使用其实很简单。把新的水质数据粘贴到原始数据列所有计算列和坐标列会自动更新图形窗口里的点也会跟着变。如果样品数量变了只需要调整数据点的引用范围其他设置不用动。批量出图的话我一般把多个样品的数据放在同一个工作表里用分组列区分一次出图就能把所有样品画在一张图上。如果每个样品需要单独出图可以用Origin的“Batch Plotting”功能按分组列批量生成图形窗口每个窗口对应一个样品。这个功能在“Plot”菜单下的“Batch Plotting”里设置好分组列和输出路径就行。还有一个提效的小技巧把建好的模板保存为“Graph Template”.otp格式下次新建图形的时候直接选这个模板所有图层、坐标轴、样式设置都带过来了只需要替换数据源就行。模板文件我一般和项目数据放在同一个文件夹里命名规则是“Piper_模板_版本号”方便追溯。最后分享一个我在实际项目中的体会Piper图的价值不在于图本身多好看而在于它能帮你快速识别水化学数据的异常。有一次做区域地下水调查三十多个样品画出来之后大部分点集中在菱形左侧的碳酸氢钙型区域但有两个点孤零零地落在右上角的氯化钠型区域。回头查原始数据发现那两个采样点的井深明显大于其他井而且附近有断裂带通过。这个图件上的异常直接引导了后续的补充采样和同位素分析最终确认了深部咸水的越流补给通道。所以画图不是目的从图里读出故事才是。模板建好只是第一步多画、多看、多对比才能真正把这张图用出价值来。
阅读完成 · 觉得有帮助?
咨询建站