MATLAB调用Origin绘图官方案例学习

MATLAB调用Origin绘图官方案例学习这里写目录标题作为一个化工狗,日常处理实验数据绘图用的都是origin,origin自带的模板和调色板比matlab好看太多(origin9以上,古老版本的origin配色也很丑)。平常都是把数据导出后转至origin处理,偶然看到origin存在COM接口,可以让matlab调用,于是试用了一下。这里把首次使用的全过程po上来,欢迎学习交流~软件版本:MatlabR2019b,Origin2…

大家好,又见面了,我是你们的朋友全栈君。

日常处理实验数据绘图用的都是origin,origin自带的模板和调色板比matlab好看太多(origin9以上,古老版本的origin配色也很丑)。平常都是把数据导出后转至origin处理,偶然看到origin存在COM接口,可以让matlab调用,于是试用了一下。

软件版本:MatlabR2019b,Origin2017(最近2020都出来了,origin还是新版好用)

origin官方案例

首先找到origin的自带案例文件,位于安装目录\Samples\COM Server and Client\MATLAB,一共有三个文件,CreatePlotInOrigin.m为在matlab中调用origin绘图,MATLABCallOrigin.m为创建workshop示例,.obj文件则是origin文件,可以自己打开看看~
在这里插入图片描述

1. 绘图

先来看看如何绘图,示例文件不包括数据文件的导入,是直接利用三角函数生成数据

function CreatePlotInOrigin()   
    originObj=actxserver('Origin.ApplicationSI'); %链接origin的COM接口
   
    invoke(originObj, 'Execute', 'doc -mc 1;');       
    invoke(originObj, 'IsModified', 'false');   

    invoke(originObj, 'Execute', 'syspath$=system.path.program$;');
    strPath='';
    strPath = invoke(originObj, 'LTStr', 'syspath$');
    invoke(originObj, 'Load', strcat(strPath, 'Samples\COM Server and Client\Matlab\CreatePlotInOrigin.OPJ'));
    
    mdata = [0.1:0.1:3; 10 * sin(0.1:0.1:3); 20 * cos(0.1:0.1:3)]; %创建数据
    mdata = mdata';  %将数据矩阵进行转置以适应worksheet列结构

    invoke(originObj, 'PutWorksheet', 'Data1', mdata);   %将数据传递至worksheet

    invoke(originObj, 'Execute', 'page.active = 1; layer - a; page.active = 2; layer - a;'); %图片绘制,创建2个图层
    invoke(originObj, 'CopyPage', 'Graph1'); % 图片复制到剪切板 
    
 end

点击运行之后就可以去ppt等地黏贴图片了,此时也可打开origin模板文件看下,如下图所示。

在这里插入图片描述

2 创建修改workbook

这一个案例文件对如何创建和修改workbook进行了说明,也有很多图片修改的命令。

function MATLABCallOrigin(x) %x为数据
    originObj = actxserver('Origin.ApplicationSI');    
    invoke(originObj, 'Execute', 'doc -mc 1;');
    invoke(originObj, 'IsModified', 'false');  
   
    strBook = invoke(originObj, 'CreatePage', 2, '', 'Origin');  %创建图2  
    wks = invoke(originObj, 'FindWorksheet', strBook);   %寻找worksheet  
    invoke(wks, 'Name', 'MySheet');   %重命名worksheet

    %设置column 
    invoke(wks, 'Cols', 3);   %设置三列
    cols = invoke(wks, 'Columns');
    colx = invoke(cols, 'Item', uint8(0)); 
    coly = invoke(cols, 'Item', uint8(1));
    colerr = invoke(cols, 'Item', uint8(2));  
    invoke(colx, 'Type', 3);  % x column
    invoke(coly, 'Type', 0);  % y column
    invoke(colerr, 'Type', 2);  % y error,不同于1.1中第三列仍然为y轴,此处设置误差,相当于origin中的操作“列→设置为→Y误差图”
    invoke(wks, 'SetData', x, 0, 0);    

    % 创建绘图
    strGraph = invoke(originObj, 'CreatePage', 3, '', 'Origin');   
    gl = invoke(originObj, 'FindGraphLayer', strGraph);   
    dps = invoke(gl, 'DataPlots');   
    dr = invoke(originObj, 'NewDataRange');
    
    % 对图片进行修改
    invoke(dr, 'Add', 'X', wks, 0, 0, -1, 0);
    invoke(dr, 'Add', 'Y', wks, 0, 1, -1, 1);
    invoke(dr, 'Add', 'ED', wks, 0, 2, -1, 2);  
    invoke(dps, 'Add', dr, 202);  % 202 for symbol+line plot    
    invoke(gl, 'Execute', 'rescale;');   
    invoke(gl, 'Execute', 'xb.text$ = "Channel";');
    invoke(gl, 'Execute', 'yl.text$ = "Amplitude";');  
    invoke(gl, 'Execute', 'range ll = !;');
    invoke(gl, 'Execute', 'll.x2.showAxes=3;');
    invoke(gl, 'Execute', 'll.y2.showAxes=3;');    
    invoke(gl, 'Execute', 'll.x.from=0;');
    invoke(gl, 'Execute', 'll.x.to=3;'); 
    invoke(gl, 'Execute', 'll.x.inc=10;');
    invoke(gl, 'Execute', 'label -r legend;');    
   
    invoke(originObj, 'Execute', 'save D:\MATLABCallOrigin.opj;');     %保存
  
    release(originObj);

这个单独运行是空的,需要先赋予数据,再运行此函数

x = [0.1:0.1:3; 10 * sin(0.1:0.1:3); 20 * cos(0.1:0.1:3)]';
MATLABCallOrigin(x);

运行结果如图
在这里插入图片描述
以上是官方案例的学习,后面倒腾一下创建自己风格的绘图模板文件,一次搞好脚本之后后面用起来应该就方便了。附上个人风格调整图,喜欢用Arial字体,颜色中掺点白色
在这里插入图片描述

另外附上可以参考学习的博客链接,包括如何导出图片等等
https://gaomf.cn/2016/01/28/Matlab调用Origin作图/
https://blog.csdn.net/LeonSUST/article/details/84861701?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

官方资料
https://www.originlab.com/doc/COM和https://www.originlab.com/doc/COM/Classes

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138348.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PyCharm2021安装教程

    PyCharm2021安装教程Windows安装pycharm教程新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入下载安装PyCharm1、进入官网PyCharm的下载地址:http://www.jetbrains.com/pycharm/downl

    2022年5月16日
    54
  • 华为云计算hcip认证用处大吗_华为云计算数据中心

    华为云计算hcip认证用处大吗_华为云计算数据中心华为云计算HCNA–FusionCompute

    2022年4月21日
    75
  • 网络攻防:telnet远程登录和拒绝服务攻击的实现(dos攻击)

    网络攻防:telnet远程登录和拒绝服务攻击的实现(dos攻击)首先先说下我写这些文章的目的.我的专业就是网络安全,因此,也愿意把自己所学的一些东西都分享出来.不过由于涉及到很多黑客的东西,一些软件我就不发了,脚本什么的你们可以拿去用.更多的是为了给大家普及一下管于黑客的知识,以及如何防范黑客.这是我写的第一篇文章,希望能给你们带来一些启发.实验环境:三台虚拟机,win7,win7,win2003,并且要关掉所有的防火墙一.telnet远程登录1.实验环境搭建实验环境:攻击机win7,靶机win2003telnet是windows里面的一个服务.基本w.

    2022年9月28日
    1
  • QtreeWidget简介「建议收藏」

    QtreeWidget简介「建议收藏」设置右键菜单并实现添加一个子项删除一个子项的功能这样有两个缺点1.只能添加特定的子项。2.不能实现不同层级节点的不同菜单。dialog.cppwidget.cppwidget.h还可以通过TYPE属性来确定每一个节点的层级。代码实现mainwindow.cppmainwindow.hdialog.cppdialog.h参考博客…

    2025年6月23日
    3
  • 一文搞懂基因融合(gene fusion)的定义、产生机制及鉴定方法[通俗易懂]

    一文搞懂基因融合(gene fusion)的定义、产生机制及鉴定方法[通俗易懂]一般来说,基因融合是指基因组层面的融合。但转录组层面也可能发生融合,主要是由于两个不同基因转录产生的RNA,由于某种原因融合在了一起,形成新的融合RNA,该RNA可能编码蛋白,也可能为非编码。而基因组

    2022年8月6日
    4
  • idea2021.8.3激活码永久(JetBrains全家桶)「建议收藏」

    (idea2021.8.3激活码永久)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~Z9LZO4ZKWA-eyJsaWNlbnNlSWQiOi…

    2022年3月22日
    82

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号