转载画图技巧 matlab 调用 Origin

Matlab作出的图普遍没有Origin作出的美观好看,而且导出为eps或emf格式后会有各种奇怪的Bug。目前普遍采用的一种方法是,将Matlab数据导出为mat文件后再导入Origin中手工作图,这种方式需要不少重复性劳动,并不是一种很完美的解决方案。
前几天偶然看到Origin提供了COM接口可供Matlab调用,于是就研究了下可否用Matlab调用Origin来生成所需的emf格式图片,最终经过一番折腾,基本完成了这个目标。

之所以能用Matlab来调用Origin,这要依赖于Origin中提供的Automation Server服务。这个服务提供了一个COM接口来供其他程序调用,官方提供了Matlab、VB、Excel、C#、LabVIEW等诸多程序调用Origin的例子。Automation Server的详细使用方法可参考其官方帮助文档。

Matlab调用Origin的示例程序位于<Install Path>\Samples\COM Server and Client\MATLAB路径下(以Origin 2015为例,其他版本的位置可能有所不同)。一共有两个m文件,CreatePlotInOrigin.mMATLABCallOrigin.m,前者用于实现调用Origin绘图,并将结果保存到剪贴板中,后者演示了如何创建工作表(Worksheet),如何插入新列等操作。另外一个CreatePlotInOrigin.opj文件是供CreatePlotInOrigin.m调用的一个Origin模板文件。

根据这两个示例程序基本就可以依葫芦画瓢写出一个符合自己要求的程序了,然而这其中并没有导出emf格式图片的示例,于是开始研究其官方帮助文档……官方帮助文档很多地方都语焉不详,而且其间还经历了种种坑,比如上篇文章这个。不过最终还是找到了正确的解决办法,就是使用Origin X-Function中的expGraph命令。


最终找到的较好的解决方案是这样的:

首先,用Origin生成一个空白模板工程,其中包含了基本的Worksheet结构及Graph样式,比如示例文件中提供的这个:

这个模板工程需要保证只要向Worksheet中填入数据,Graph中就能生成所需的图,就像这样:

这里的Worksheet和Graph可以不止有一个,不过一般情况下一个就足够了。

制作好了模板文件后,在Matlab程序中只需要通过COM接口调用Origin,打开这个模板文件,然后向其中的Worksheet填入正确的数据,最后导出图片文件即可。
Matlab程序如下:

123456789101112131415161718192021222324252627282930313233
% 调用Origin作图并保存为emf格式的图片% 作者 : 高明飞% 日期 : 2016-01-27

% mdata : 需要填充到Origin Worksheet中的数据% template : Origin模板函数名,不含后缀,需要保存在当前工作目录下,如'CreatePlotInOrigin'% fdir : 输出图片目标文件夹,如'D:\image'% fname : 输出图片文件名,不含后缀,如'abc'

function OriginPlot(mdata, template, fdir, fname)% Obtain Origin COM Server object% This will connect to an existing instance of Origin, or create a new one if none existoriginObj=actxserver('Origin.ApplicationSI');

% Clear "dirty" flag in Origin to suppress prompt for saving current projectinvoke(originObj, 'IsModified', 'false');

% Load the custom template projectdir = pwd;dir = strcat(dir, '\', template, '.opj');invoke(originObj, 'Load', dir);

% Send this data over to the Data1 worksheetinvoke(originObj, 'PutWorksheet', 'Data1', mdata);

% Save graphcmd = 'expGraph type:=emf overwrite := rename tr1.unit := 2 tr1.width := 10000 path:= "';cmd = strcat(cmd, fdir, '" filename:= "', fname, '.emf";');invoke(originObj, 'Execute', cmd);

% Releaserelease(originObj);end

上面这段程序中要求Worksheet的名称需要为Data1,这是由invoke(originObj, 'PutWorksheet', 'Data1', mdata);这句代码确定的;
导出的图片为emf格式,图像宽度为10000像素,因为这是矢量图,所以文件体积并不大的。

以上这个版本只是个最基本的版本,不过一般使用也够用了,更多的高级功能,比如动态调整坐标轴名称,动态调整x、y轴的范围以适应不同数据等之后有空再来研究……

原始链接:http://gaomf.cn/2016/01/28/Matlab调用Origin作图/

画图技巧 : Matlab调用Origin作图相关推荐

  1. originlab matlab,Matlab调用Origin作图

    Matlab作出的图普遍没有Origin作出的美观好看,而且导出为eps或emf格式后会有各种奇怪的Bug.目前普遍采用的一种方法是,将Matlab数据导出为mat文件后再导入Origin中手工作图, ...

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

    MATLAB调用Origin origin官方案例 1. 绘图 2 创建修改workbook 日常处理实验数据绘图用的都是origin,origin自带的模板和调色板比matlab好看太多(origi ...

  3. 2021-01-20 Matlab画图技巧与实例:堆叠图stackedplot

    Matlab画图技巧与实例:堆叠图stackedplot 在MATLAB线图中,一共有3种类型,分别是 线图,包括:plot,plot3,stairs,errorbar,area,stackedplo ...

  4. matlab中单独存图_奇怪的Matlab画图技巧系列1–保存高清大图

    毕业季马上要到了,给大家总结一些我平常用到的奇特但是好用的Matlab画图技巧 保存高清大图 很多朋友保存Matlab图片时会选择jpg保存或者截图,然后放到论文发现特别模糊尤其文字部分是进行缩放调整 ...

  5. C# 调用 origin 批量作图

    源自博客园--由于博主写的不错,方便自己找也方便csdn的朋友所以拿来主义了.. 质谱数据处理软件中,需要批量粘贴 Origin的矢量图到Word和PPT中,由于出图量大,需要用代码生成. 代码参考了 ...

  6. matlab中根据表格数据画图,excel表格中数据作图-如何利用matlab根据excel表格里面的数据画图...

    如何用excel表格中的数据制图 方法/步骤 1,在excel中输入制图表所需要的数据. 2,选择数据(选择不连续的数据可以按住"ctrl"在选择就可以了.还有选择时要连表头一起选 ...

  7. matlab利用图片矩阵画图,matlab 根据邻接矩阵作图【借鉴实操】

    <matlab 根据邻接矩阵作图[借鉴实操]>由会员分享,可在线阅读,更多相关<matlab 根据邻接矩阵作图[借鉴实操](4页珍藏版)>请在人人文库网上搜索. 1.Matla ...

  8. matlab调用maple数据画图,Matlab调用Maple

    Matlab调用Maple 2011-05-10 09:17 如何在matlab中调用maple (不用安装maple软件就可调用) 方法1: maple('maplestatement') 其中ma ...

  9. txt中的数据导入matlab中画图,excel怎样导入表格数据-如何将excel表格中大量数据导入matlab中并作图...

    Excel中如何将另一表格中的数据对应导入 1开表格,在上方功能栏点击据". 2.点入数据. 3.点击数据来源. 4择想要的导入的数据文件,就好了. 如何将TXT文档中的数据直接导入到Exc ...

最新文章

  1. python中adb连接手机_Python脚本利用adb进行手机控制的方法
  2. python snmp采集交换机信息_智慧工厂工业交换机网络运维管理系统
  3. HTML5性能优化需要注意的几个问题
  4. List 集合转换为String
  5. lisp 设计盘形齿轮铣刀_机械设计基础——周转轮系传动比的计算
  6. shell脚本:批量修改文件名(文件名中添加字符)
  7. hadoop conf中xml文件修改
  8. 请插入多卷集的最后一张磁盘_聊一聊插入排序和选择排序
  9. windows 下编译libcurl,通过url下载图片数据
  10. PotPlayer优化与最高画质设置(最强本地播放器)
  11. bzoj4754: [Jsoi2016]独特的树叶
  12. 十个最好的免费杀毒软件
  13. 固态硬盘用软件测试掉速严重,固态硬盘会不会掉速,得这么测
  14. 毕业设计中使用支付宝沙箱完成在线支付流程
  15. 【原】 可供测试的信用卡号 Test Credit Card Number
  16. 3 Linux虚拟机创建修改删除文件和文件夹
  17. 人工智能轨道交通行业周刊-第12期(2022.8.29-9.4)
  18. 啊哈,在PDD买了一套自己的盗版书
  19. 安全狗核心产品入选《云原生产品目录》云原生安全实力备受认可!
  20. C/C++后台开发基础知识

热门文章

  1. 蓝牙室内定位之高精度AOA定位技术未来发展趋势-新导智能
  2. (数据结构)图——图、顶点、无向边、无向图、有向边、有向图、简单图、无向完全图、有向完全图、稀疏图、稠密图、权、网、子图的相关概念
  3. MAPGIS-TDE 三维处理平台简介
  4. 在CODESYS中通过EtherCAT总线驱动单个电机
  5. js之内置对象的练习
  6. Java静默调用虚拟打印机_静默虚拟打印机BullzipPDFPrinter
  7. 计算机毕业设计 SSM在线音乐网站设计与实现(源码+论文)
  8. 个人计算机的系统设计,计算机毕业论文设计——个人日志系统的设计与实现.doc...
  9. JSP动态网页设计与JavaWeb编程
  10. 手动批量升级xp系统补丁