ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Origin画桑基图:从数据整理到论文级出图全攻略

Origin画桑基图:从数据整理到论文级出图全攻略 先说一个我自己的经历。有一年做园区能耗审计汇报到“电到底用哪去了”这个环节时甲方领导盯着柱状图看了半天问了一句“那损耗的部分是从哪一步漏掉的”说实话柱状图能清楚告诉你每个环节是多少但讲不清“从哪里来、到哪里去”。后来我改用Origin画了一张桑基图电网进线、车间用电、空压机损耗、照明办公、回收利用……每条流往哪走、占多大比例一眼就能看明白。领导看完直接说这个图好。正是那次之后Origin里的桑基图就成了我科研图表库里高频使用的一种图形。很多人一听到“桑基图”就想着要用Python、R或者专门工具去画其实Origin本身完全能搞定而且论文后期排版、字体统一、图例修改都比外部工具顺手得多。这篇文章我就把“Origin画桑基图”这件事从头到尾拆开讲它适合什么数据数据表怎么摆绘图细节怎么调以及我在实际使用中踩过的坑和排查技巧全部整理出来。无论是做能源、环境、生物代谢还是供应链分析这篇内容都能直接用。1. 为什么科研图表里需要桑基图1.1 桑基图到底在表达什么桑基图的核心逻辑很简单用一条条“带子”表示流量带宽正比于流量大小从起点流向终点中间可以汇合、分流最终流量守恒。这种图最早是爱尔兰工程师Sankey在十九世纪末画蒸汽机能效时发明的所以也直接叫“桑基图”。它的不可替代性在于既有总量信息又有流向信息还能看出系统里的“薄弱环节”。比如刚才说的能耗审计电网输入100份能量工业负荷用了60份空压机损耗了15份冷却水回路损失8份传输线耗散5份最终产出产品只占12份。柱状图只能告诉你“产品只占12%”但桑基图能一眼指出那88%是在哪个环节流失的中间哪一根“带子”粗得像事故现场后续优化方向就很清晰。生活化的类比就是一条河的主干分成很多支流支流有的汇入湖泊有的蒸发了每条支流的宽度就是水量。桑基图就是这种河流水系的可视化只不过河道变形成一条条色带主次关系、瓶颈环节都非常直观。1.2 哪些科研方向最常用到它从我的接触来看桑基图在以下几类学科里出现频率最高能源与热工能量流、㶲流、碳排放流分析。比如煤电机组输入燃料热值分配到电、烟气余热、冷却损失。生态环境物质流分析、水足迹、氮磷流向。比如污水处理厂的进水有机物去向好氧降解、厌氧降解、剩余污泥、出水残存。生物医学代谢通路、患者转归。比如入院患者分流至普通病房、ICU、手术、出院、转院。材料与化工质量平衡、元素流向。比如化工装置中碳元素在原料、产品、尾气、废渣之间的分配。物流与供应链库存调拨、订单流向、区域间贸易流量。经济管理资金流向、客户分层转化路径。可以看到只要是“多个来源、多个去向、流量可量化”的数据都适合用桑基图。反过来说如果你的数据是简单的一个变量和一个值那柱状图、饼图更合适没必要硬上桑基图。1.3 为什么我推荐用Origin而不是其他工具市面上的桑基图工具很多Python里有Plotly的Sankey图、pySankeyR里有ggalluvial、networkD3还有网页版的SankeyMATIC。这些工具功能很强但科研论文场景下有几个痛点学习成本高。Python环境、依赖包、中文字体配置样样都要折腾很多人画一张图用了半天装环境用了两天。后期排版不好改。网页工具导出的图是位图论文返修时要改一个节点名字或颜色就得重新生成一次甚至数据没变只是改字号都得重画。与论文工作流的衔接差。科研论文的图表最终要统一字体、统一字号、统一线宽用Origin可以直接在软件里调整也能插入多图组合排版这是网页工具很难比的。当然Python的Plotly在交互式和复杂自定义上更强如果只是静态论文图Origin完全够用而且效率更高。我个人的经验是数据体量大到几千条流以上才考虑写代码几十条以内直接Origin半小时能出一张图改起来也快。2. 动手前的准备数据结构和版本判断2.1 数据表怎么摆才正确画桑基图之前最重要的一步不是打开软件而是先把数据表整理成“源-目标-权重”三层结构。听起来简单但我在培训里看到至少有一半的人栽在这里。源Source表示流量从哪来目标Target表示流量到哪去权重Weight表示流量大小。Origin识别桑基图数据时默认就是这三列。举一个直接能照着录的示例这是一个典型园区的电能量流数据SourceTargetFlow / GWh电网工业负荷340电网办公照明45电网空压机系统120电网冷却水回路70空压机系统有效气体做功28空压机系统热损失92工业负荷有效产品能耗130工业负荷设备散热损失80工业负荷废水带走130冷却水回路循环补充55冷却水回路蒸发及排污15办公照明有效照明35办公照明灯具散热损耗10注意几个操作原则每条流必须是一行不能用合并单元格不能把数据分成多个分表。源和目标的名称要保持一致比如不要一行写“电网”另一行写“电网系统”否则Origin会当成两个节点图会很乱。权重要填成实际流量不能填百分比因为桑基图的带宽是按绝对值计算的。如果有多个流程层级比如从电网到设备、再到产品那就依次把每一段流都写成一行同一来源和目标可以出现多行但建议先求和合并避免出现很多条贴在一起的细带。2.2 Origin版本怎么选Origin原生桑基图功能是从2021版本开始加入的路径是“Plot → Categorical → Sankey Chart”。如果你用的是Origin 2018、2019、2020这个入口默认是没有的得想办法找第三方模板或自己画效果和操作便捷性都大打折扣。所以第一件事先看自己电脑上的Origin是什么版本。我自己电脑上长期保留Origin 2021和Origin 2025两个版本2021用来跑老项目文件稳定2025用来画新图。如果你是学生或科研人员学校一般有正版授权直接装新版就行没有授权的话尽量走正版试用或单位采购不推荐用带Demo水印的版本因为论文投稿导出图时水印去不掉的麻烦会让人崩溃。另外即使是2021及以后的版本不同小版本在桑基图参数细节上略有差异。比如有些版本的连线曲率调节在“Plot Details”的“Stream”选项卡里有些版本的节点颜色在“Level”里改。如果界面英文菜单看着不方便可以把Origin切换成中文版后面我会讲到怎么操作。2.3 网络搜索闭坑别下错“Origin”这里要提醒一句很多人直接搜“origin 下载”结果下载到游戏平台、代码版本控制工具甚至各种全家桶。那个图标是个地球游戏的Origin跟科研绘图完全没关系。搜索时请务必加“科研绘图”或“OriginLab”关键词否则下载安装包事小装一堆没用的插件和广告软件才让人头疼。3. 核心实操从数据表到一张能投稿的桑基图3.1 数据录入用工作簿还是直接从Excel粘贴Origin支持两种方式一是直接在Origin的工作簿里新建列填写数据二是把Excel或WPS表格里的数据直接复制粘贴进来。我个人推荐第二种因为大多数人的原始数据整理都是在Excel里完成的直接粘贴到Origin能减少重新输入带来的低级错误。粘贴时有一个小细节如果你把Excel里的标题行也选中了Origin会自动识别列名为Source、Target、Weight省去后续改名。如果你粘贴后发现列名变成了Col(A)、Col(B)、Col(C)别紧张双击列标题手动改成易识别的名字即可。录入时还要检查数据类型。Source和Target列必须是文本格式不能是数字编码。比如源节点你可能想用“101、102”编号但Origin默认会把数字当成数值类型画图时会出现节点名称是数字、很难辨认的问题。如果非要用编号就把那一列的属性改为文本或者直接写名称。3.2 插入原生桑基图的具体步骤数据录好后画图主流程如下用鼠标框选所有数据列一定要把三列都选中。点击菜单栏“Plot” → “Categorical” → “Sankey Chart”。如果弹出绘图对话框检查Source、Destination、Weight分别对应哪一列确认后点击OK。图表生成后默认是一个比较粗糙的图形节点颜色随机分配连线透明度很高。这四步五分钟就能走完真正的功夫在图生成之后的调整上。很多教程到这里就结束了但你会发现生成的图跟论文里那种干净漂亮的桑基图差得远。别急后面才是关键。3.3 图生成后的结构调整要点生成桑基图后第一件事是打开左侧的“Plot Details”面板或者直接双击图上的空白区域。这里有几个必调项节点排列顺序桑基图节点在纵轴上的上下顺序由数据表行的顺序决定。如果你想调整某个节点的位置可以回到工作簿里调整行的先后顺序然后右键图选择“Update”或者直接在图上拖动节点但拖动有时不精确还是改数据表顺序更可控。节点颜色在“Plot Details” → “Level”选项卡里可以双击每个节点单独改颜色。也可以直接点工具栏里的“Color Map”按某一列数据映射颜色这样相同来源的节点会有相近色系视觉上更统一。连线透明度桑基图节点是实心的、连线的色带是半透明的。默认透明度可能是50%如果节点重叠严重可以降到30%让线带之间的叠压关系更清楚。连线曲率在“Plot Details” → “Stream”选项卡里能找到“Curvature”参数。默认值决定连线是平缓弯曲还是陡坡陡降。节点层级多的时候曲率调低一点会更清爽层级少的时候曲率调高一点反而有流动感。我的经验是默认图出来先不要急着改颜色先把图层尺寸、连线粗细、曲率这三项调到位再上色。因为颜色改早了后面调结构又要重选效率很低。3.4 样式细节图例、坐标轴和字体统一科研论文对图表格式有隐形要求审稿人不会明说但挂在嘴上最多的是“字体不统一”“分辨率不足”“图例位置混乱”。在Origin里做桑基图时我把这些细节看成三个层次第一层是图例。桑基图默认生成的图例可能是在右侧一列条目很多时会拉得很长。如果你希望图例横向排列双击图例框在“Legend”相关属性里把列数Number of Columns改成3或4就能变成横排也可以直接右键图例 → “Properties” → 修改“Col”数量。我自己习惯把图例放在图的右下角列数设成能铺满短边的数量整体更紧凑。第二层是坐标轴。桑基图本身不需要显示传统X/Y坐标轴但Origin默认可能带出一些刻度线或边框。在“Layer Properties”图层属性里把X轴、Y轴的显示都关掉只保留一个浅灰色边框或者完全不显示边框这样图放在论文里更干净。第三层是字体。Origin默认的字体经常是Arial或默认的Origin Sans如果你整篇论文用Times New Roman这里就要手动统一。双击图上的任意文字选中文本框把字体改成目标字体。中文字体如果显示成方框多半是字体没有选择支持中文的字体比如宋体、微软雅黑务必在字体下拉列表里明确选择而不是让软件自动匹配。3.5 导出的正确姿势很多学生在最后一步导出上吃亏。论文投稿要求的图通常是300 dpi以上的TIFF或PNG如果是期刊要求高可能还要矢量图比如EPS、SVG。Origin里导出时菜单路径是“File → Export Graphs”弹窗里可以选择Image Format、DPI、文件名。我推荐的做法是投稿用或打印预览用导出TIFF格式DPI设为600色彩模式选RGB或CMYK按期刊要求来。返修时对方要求可编辑文件导矢量格式EPS或PDF但要注意如果桑基图里用了中文字体矢量导出时字体可能没嵌入对方打开会是乱码。解决办法是能英文就英文实在要中文导出前在“Preferences → Options”里把图形字体嵌入打开。导出前一定要把画布范围收缩不要让图四周留一大片空白。用“Format → Page Scale”或者直接拖动画布边界确保图形占满页面否则导入Word后比例会很怪。4. 我踩过的坑和排查技巧实录4.1 桑基图相关的几个大坑坑一节点顺序老是乱跳。明明是源、源、源、目标排下去更新几次图后节点顺序全变了。这个问题多数情况是因为数据表不是按“源到目标”的自然顺序排列或者工作簿被Excel打开过、行顺序被自动排序了。解决办法很粗暴重新选定所有列右键选“Sort Worksheet by Column”按源名称排序再Update图形。坑二流量差距太大小的被淹没。比如总流量几千有个分支只有几画出来那条带子细到看不见。这种情况Origin本身无解只能在图上手动加一条标注或者在数据分析时就把它归入“其他”类。如果这个分支又是你想强调的关键数据那就别用桑基图表达这一块换成局部放大图或表格更好。坑三中文字体乱码。数据源名称里带了“冷却水回路”之类的中文默认英文字体不支持中文图上直接变方框。需要在“Plot Details”里把节点和标签字体改成中文字体。如果根节点数量多逐一点太麻烦可以选中该图层上所有文本对象统一设置。坑四连线颜色跟节点颜色不衔接。默认情况下连线颜色是随源节点或目标节点变化的但有版本默认搞成同一深蓝色导致图面死气沉沉。在“Plot Details” → “Stream” → “Color”里选择“Map by Destination”连线颜色会跟着目标节点色系走图面会精神很多。坑五Demo水印问题。如果你的Origin显示的是未激活版本导出图片会在左上角带一个明显的“DEMO”水印。这个水印绝不是稍微裁切就能处理干净的我在返修稿子上见过学生直接把水印区域裁掉结果把上面一排图例也裁没了。正路是直接用校园授权或临时试用授权别在水印上花时间。4.2 顺手整理Origin通用高频小技巧借这篇桑基图的由头我把平时被问得最多的几个Origin问题一起整理出来这些问题跟桑基图不见得直接相关但做科研图表时一定会碰到。图例横向排列双击图例在属性里把Number of Columns改大图例就从竖排变横排了。快速将所有列都除以10选中需要处理的列右键 → “Set Column Values”在表达式框里输入col(A)/10如果有多列就写col(A)/10, col(B)/10。柱状图叠在一起怎么分开选中数据在“Plot Details” → “Stack”里改成“Individual”或调整“Gap”叠在一起的柱子会自动拆开更根本的办法是重新构造数据表把不同序列放不同列。频率分布直方图选择数据列后用“Statistics → Descriptive Statistics → Frequency Count”可以按区间统计频次然后再画柱状图或折线图。设置千分位分隔符双击坐标轴刻度数字在“Custom”或“Number Format”里勾选“Thousands Separator”坐标轴上的数值就会显示成1,000,000这种形式。打开Origin文件显示没有窗口大概率是工作簿窗口被隐藏在任务栏后面按CtrlTab在文件窗口间切换如果依然不显示关闭软件重新打开项目文件即可。加一组数据更新图形把新列直接拖入原图或者在图上右键 → “Plot Setup”在左侧数据列表里勾选新增列并选择绘图类型确定后图形自动更新。改变横纵坐标比例双击图层空白进入“Layer Properties”在“Size/Speed”里手动调节“Width”和“Height”的比例或者直接用鼠标拖边框同时按住Shift可以等比缩放。4.3 排查思路先图层再对象很多人在Origin里遇到图形显示异常就慌其实排查的核心逻辑很简单先看图层Layer再看对象Object。图层层面看图层是否被遮挡、是否超出了页面边界、是否被隐藏。点图层左上角的编号图标看这个Layer是否被激活、属性是否正确。如果桑基图本来存在但只显示了节点看不到连线打开“Plot Details”确认连线层有没有被勾选为可见。对象层面再看具体是哪一类对象出了问题。是节点颜色不对、标签不显示、还是线带宽不变。标签不显示双击空白打开“Plot Details” → “Labels”把Visible勾上再检查字体颜色是否为白底白字线带宽不随数据变化确认Weight列是否被正确加进去如果设成了恒值带宽自然会一样。这两层排查顺序熟练后大多数奇怪现象两分钟内就能定位。5. 进阶玩法把桑基图画得会讲故事5.1 用局部放大图突出关键流段桑基图一旦流量分支多读者容易盯着最大的那条带子看忽略了你想重点突出的关键环节。Origin里可以插入局部放大图Inset原理是把原图复制一个加上一个画布框和引线再放大指定区域。操作上第一步在原图旁边复制一个新的图层选中这个图层后整体放大第二步把不需要的图例删掉只保留几条关键流第三步在新图层上加一个“局部放大坐标范围”的框并在两图之间画一条连接线段。这个方法非常实用尤其适合能源审计里“损耗放大镜”的场景。比如空压机热损失占了92GWh你在总图上它只是中间一条细流但在放大图里可以把它与系统其他损耗单独切出来详细画。5.2 多图层组合一个页面讲完“多年对比”如果你想展示同一系统不同年份的流量结构变化可以在一页里摆三张桑基图分别对应基准年、改造后、目标态。每张桑基图用同一个数据模板只改数据表内容然后右键“Update Template”刷新即可。这里有一个重要技巧三张图必须锁定相同的节点颜色规则否则读者会以为颜色代表不同含义。方法是在第一张图上设置好所有节点颜色后把配色方案存成自定义颜色表后两张图直接加载这个颜色表。Origin里具体路径是“Color Map”下拉菜单的“Color List” → “Add New”之后在Plot Details里调用。5.3 桑基图与其它图的配合很多论文里桑基图和箱线图、柱状图是配合作伴的。桑基图负责整体流动关系箱线图负责某个节点在不同实验组间的差异瀑布图负责逐项增减的因果链。在Origin里你可以把这些图分别画好后用“Merge Graph Windows”合并到一个页面形成一个多面板Figure。我见过一篇环境论文“结果”一章开头放一张桑基图展示污染物总分配后面接两张箱线图展示不同处理工艺下的浓度差异逻辑非常顺。Origin做这种多图拼版比PPT拼图清晰得多字号和图例也对得齐。5.4 自定义模板下次直接套用如果你经常需要画同类型的桑基图强烈建议把调好配色、字体、图例位置的图保存为模板。具体做法是编辑好一张图后右键图形旁边空白处选择“Save Template as”命名如“Sankey_Energy”之后新建数据画图时在Plot菜单下就能看到这个模板一键套用。模板的好处不只是省时间更关键的是它能保证同一篇论文里多张桑基图风格完全一致。我自己的某个横向项目做了六个月前后画了十几张桑基图因为一直用同一个模板最后合并出图时没有任何一张需要返工调格式。我自己的习惯是无论用什么图先把数据逻辑想清楚再打开软件。桑基图尤其如此因为它的数据必须是一条条方向明确的流数据表理不顺后面所有努力都是白费。刚开始用Origin画桑基图时我也费了不少劲第一次生成的图简直没法看节点挤成一团连线的透明度还让整张图显得灰蒙蒙。后来把数据表规范好又花了一下午把图层属性一个个试过才摸清了门路。最后再分享一个小技巧调图时每调整一个参数就顺手截个图存到草稿里标注这个参数改的是什么。等你回头发现某次调改把图弄乱了翻一翻截图很快就能定位问题。科研绘图这事耐心比天赋值钱单张图多花半小时换来的是整篇论文的图表质量上一个台阶这笔账怎么算都划算。
返回列表