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

您所在的位置:网站首页 matlab导入mat文件画图 MATLAB调用Origin绘图官方案例学习

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

2023-09-26 01:51| 来源: 网络整理| 查看: 265

MATLAB调用Origin origin官方案例1. 绘图2 创建修改workbook

日常处理实验数据绘图用的都是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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3