从很早的版本开始MATLAB就支持对 patch、surface 等对象设定透明属性,有些示意图也必须使用透明的对象才能充分展示所要表达的含义。对透明对象支持最好的通用图片格式就是 .png 了,但是 png 图像并非矢量图形,对于一些需要以矢量图显示的场合并不适用,比如某些展示超多细节的文档需要不断被放大放大放大,再比如许多期刊就不允许提交 png 格式的附件,只支持 .eps、.tiff、.jpeg 等。

eps (Encapsulated PostScript) 格式是被学术期刊最广泛认可的图片格式,其本身就是为矢量图而设计。遗憾的是 PostScript 作为一个啥都能干的图形学语音,居然直到现在都不支持透明度(transparency)的属性,因此想要让 MATLAB 中的带透明对象图形以 .eps 格式输出,只能依靠一些偏门的手段来曲线救国,比如下面提到的方案就是把透明对象的表观颜色赋给了矢量图,让它看起来像是透明而已。

首先明确一下目标:利用Matlab工具生成带有透明度属性(FaceAlpha、EdgeAlpha 等)的图形,将其以 .eps 格式输出,且保留 MATLAB 中所展示的透明度特征。先用peaks函数生成一个曲面,令其表面透明度为50%:

s = surf(peaks(30))

set(s,'facealpha',0.5);

set(gcf,'color','none');

首先试试用自带的print函数导出会得到怎样的结果:

print E:graphic.eps -r300 -opengl

-r300 表示以 300dpi 导出,-opengl 表示使用 opengl渲染器, -painters 渲染器不支持透明属性所以不用试了。将这张 eps 图片插入Word中,然后用 Adobe PDF打印机默认的「高质量打印」输出 pdf。

打开 pdf,果然不行,虽然矢量图保留了,但是连颜色居然都没了:(

下图中右边为局部放大展示,下同。

再来试一下广受欢迎的export_fig函数:

export_fig E:Graphic2.eps -r300 -a2 -opengl

注意一下export_fig要直接输出 eps 格式的话需要已经安装GhostScript以及GhostXPS,否则会报错。export_fig能保留透明效果(前提是使用 -opengl),但是已经变成了位图,效果如下:

既然export_fig还可以直接输出为 PDF,不妨试一试 PDF 能不能行得通,然后再用GSView转成 eps:

仍然不对,问题跟直接输出的 eps 一样。想要靠 MATLAB 自带的导出函数和export_fig基本是没指望了。我搜了一下,发现不少人提倡以 .svg (Scalable Vector Graphics) 格式导出矢量图,但是 .svg 只是网页常见的矢量图格式,人家期刊并不支持,还得再绕一步将 .svg 转成 .eps。MATLAB 本身不支持 svg 的导出,所幸 FileExchange 中有人已经写好了plot2svg,使用非常方便。但是需要注意一下的是,plot2svg已经三四年没有更新过了,对于2014以后版本的 MATLAB 会报错,只需要进入 plot2svg.m 文件中将所有的str2num改为str2double即可。仍然是刚才那个图形,将其导出为 svg 格式:

plot2svg('E:Graphic3.svg');

svg 文件当然是极好的,又能透明又是矢量,比如下面这张,不管你怎么缩放现在这个页面都能保证一直是清晰的

但是我们的目标是 eps。我先试了一下免费的Inkscape,还是用 300dpi 导出,不选择栅格化:

可惜导出之后还是变成了位图(不过貌似使用 Inkscape 导出时会自动抗锯齿?对比下图和上面export_fig的结果就会发现):

没办法只能用 AI 了。我为了把这个问题解决特意去下载了一个 AI,感觉有些大材小用啊... 还好,问题解决了!AI 导出时全部使用默认设置,除了把 dpi 调到300:

导出,真•矢量图达成!

继续放大:

最后总结一下工作流:

1、使用plot2svg函数先将 MATLAB 中生成的图形以 .svg 格式导出;

2、在Adobe Illustrator中打开 svg 文件,再将其以 .eps 格式导出。

附带说一下。这个方法只有必要对 MATLAB 中的带透明属性的 patch、edge 对象进行操作,如果仅仅是令当前窗口或当前坐标轴的背景透明,用自带的print和export_fig都能实现,没必要搞得那么复杂。

matlab patch 透明度,怎么利用Matlab工具生成带有透明度对象的矢量图相关推荐

  1. 利用Matlab进行灰色预测,利用matlab进行灰色预测.pdf

    利用matlab进行灰色预测,灰色预测matlab程序,灰色预测模型matlab,matlab灰色预测,matlab灰色预测代码,matlab灰色预测工具箱,灰色预测的matlab程序,matlab灰 ...

  2. matlab ploty,matlab绘制函数 如何利用matlab的ploty

    最近有网友提出"matlab绘制函数 如何利用matlab的ploty"等问题,小小知识站提取了各大知名网站有关"matlab绘制函数 如何利用matlab的ploty& ...

  3. Matlab生成visio可导入的矢量图

    目录 一.前言 二.Matlab生成visio可导入的矢量图方法如下: 1.输入代码,生成图片 2.导出 三.emf文件导入visio的步骤 1.打开Visio,创建一个空白绘图 2.点击插入栏下的图 ...

  4. matlab模拟线圈电磁场,利用MATLAB的PDE工具箱对电场和磁场进行模拟

    中学物理Vol. 32 No.巧 疑的态度,认为弊大于利,笔者认为这些想法不无道理,只是大家的关注点应该在于如何更好发挥它的优势,而避免它的不足.在实践的过程中笔者有以下心得和体会,与大家分享: 3, ...

  5. matlab示波器模拟,[转载]利用MATLAB命令窗口绘制Simulink仿真示波器波形的方法

    利用MATLAB命令窗口绘制Simulink仿真示波器波形的方法 最近写了一篇有关步进电机控制仿真分析的文章,需要将一部分仿真波形图贴到WORD里面去.但贴图时发现,如果直接将simulink中示波器 ...

  6. matlab文件批量命名,利用MATLAB批量对文件重命名

    利用MATLAB批量对文件重命名 tags: MATLAB 科研软件 序 窃·格瓦拉 没paper,实验肯定要做啊,不做就毕不了业 . 编程这方面,编程是不可能编程的,这辈子不可能编程的 . pape ...

  7. 使用matlab绘画曲线图,6.利用Matlab绘制趋势面图形.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab 6.利用Matlab绘制趋势面图形.doc4页 本 ...

  8. matlab 断层 体三维重建,利用Matlab实现原木CT断层图像的三维重建

    利用Matlab实现原木CT断层图像的三维重建 运用MATLAB7.0软件中的图象处理工具箱实现了原木C (本文共4页) 阅读全文>> 目的:研究利用初步建立的三维模型确定二维断层图像感兴 ...

  9. matlab里面求线性方程组,利用matlab求线性方程组.doc

    利用matlab求线性方程组.doc MATLAB语言课成论文利用MATLAB求线性方程组姓名郭亚兰学号12010245331专业通信工程班级2010级通信工程一班指导老师汤全武学院物电学院完成日期2 ...

最新文章

  1. 一文搞懂TCP的三次握手和四次挥手
  2. MySQL 5.6 Warning - Using a password on the command line interface can be insecur 解决方案
  3. 网易云轻舟微服务深度解读:基于开源,强于开源
  4. 用ABAP来实现柱状图和饼状图的输出
  5. python编写函数_python函数式编程
  6. C++ vector容器 find erase的使用:查找并删除指定元素
  7. 二,表格table的使用细节
  8. 英语四六级听力考试选项技巧
  9. android返回页面代码实现,Intent携带信息返回上一个界面实现基本信息的设置
  10. 一步步实现SDDC--多角色服务器部署
  11. css背景图毛玻璃,css实现背景图片的毛玻璃效果
  12. 迅捷cad_迅捷结构
  13. Yarn分布式集群操作系统
  14. HouseMD v0.2.1 发布,比Btrace更实用运行时诊断工具
  15. 防火墙阻止tftp_再谈突破TCP-IP过滤/防火墙进入内网(icmp篇)
  16. 单片机复位电路的简谈
  17. 基于139邮箱的新邮件到达免费短信提醒的研究与应用
  18. ssm毕设项目民宿预定管理系统20sxh(java+VUE+Mybatis+Maven+Mysql+sprnig)
  19. 浅谈上海装修设计公司吊顶安装的注意要点
  20. Power BI 字符串填充一些特定的字符补齐位数

热门文章

  1. vivoY73s和华为畅享20Plus哪个好?
  2. 前端正则表达式校验邮箱,电话,身份证等
  3. 使用three.js开发3d地图初探
  4. arm mali 天梯图_麒麟980天梯图性能排行榜
  5. 腾讯企业邮箱,QQ邮箱 支持通过客户端进行邮件管理
  6. vba excel 开发游戏_VBA代码助手专业版正式发布,让天下没有难写的VBA代码
  7. vue3安装vue-router
  8. 代码随想录二战day2
  9. Java学习-MySQL
  10. 计算机科学领导者:卡内基梅隆大学ACL2016论文汇总