matlab patch 透明度,怎么利用Matlab工具生成带有透明度对象的矢量图
从很早的版本开始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工具生成带有透明度对象的矢量图相关推荐
- 利用Matlab进行灰色预测,利用matlab进行灰色预测.pdf
利用matlab进行灰色预测,灰色预测matlab程序,灰色预测模型matlab,matlab灰色预测,matlab灰色预测代码,matlab灰色预测工具箱,灰色预测的matlab程序,matlab灰 ...
- matlab ploty,matlab绘制函数 如何利用matlab的ploty
最近有网友提出"matlab绘制函数 如何利用matlab的ploty"等问题,小小知识站提取了各大知名网站有关"matlab绘制函数 如何利用matlab的ploty& ...
- Matlab生成visio可导入的矢量图
目录 一.前言 二.Matlab生成visio可导入的矢量图方法如下: 1.输入代码,生成图片 2.导出 三.emf文件导入visio的步骤 1.打开Visio,创建一个空白绘图 2.点击插入栏下的图 ...
- matlab模拟线圈电磁场,利用MATLAB的PDE工具箱对电场和磁场进行模拟
中学物理Vol. 32 No.巧 疑的态度,认为弊大于利,笔者认为这些想法不无道理,只是大家的关注点应该在于如何更好发挥它的优势,而避免它的不足.在实践的过程中笔者有以下心得和体会,与大家分享: 3, ...
- matlab示波器模拟,[转载]利用MATLAB命令窗口绘制Simulink仿真示波器波形的方法
利用MATLAB命令窗口绘制Simulink仿真示波器波形的方法 最近写了一篇有关步进电机控制仿真分析的文章,需要将一部分仿真波形图贴到WORD里面去.但贴图时发现,如果直接将simulink中示波器 ...
- matlab文件批量命名,利用MATLAB批量对文件重命名
利用MATLAB批量对文件重命名 tags: MATLAB 科研软件 序 窃·格瓦拉 没paper,实验肯定要做啊,不做就毕不了业 . 编程这方面,编程是不可能编程的,这辈子不可能编程的 . pape ...
- 使用matlab绘画曲线图,6.利用Matlab绘制趋势面图形.doc
您所在位置:网站首页 > 海量文档  > 计算机 > matlab 6.利用Matlab绘制趋势面图形.doc4页 本 ...
- matlab 断层 体三维重建,利用Matlab实现原木CT断层图像的三维重建
利用Matlab实现原木CT断层图像的三维重建 运用MATLAB7.0软件中的图象处理工具箱实现了原木C (本文共4页) 阅读全文>> 目的:研究利用初步建立的三维模型确定二维断层图像感兴 ...
- matlab里面求线性方程组,利用matlab求线性方程组.doc
利用matlab求线性方程组.doc MATLAB语言课成论文利用MATLAB求线性方程组姓名郭亚兰学号12010245331专业通信工程班级2010级通信工程一班指导老师汤全武学院物电学院完成日期2 ...
最新文章
- 一文搞懂TCP的三次握手和四次挥手
- MySQL 5.6 Warning - Using a password on the command line interface can be insecur 解决方案
- 网易云轻舟微服务深度解读:基于开源,强于开源
- 用ABAP来实现柱状图和饼状图的输出
- python编写函数_python函数式编程
- C++ vector容器 find erase的使用:查找并删除指定元素
- 二,表格table的使用细节
- 英语四六级听力考试选项技巧
- android返回页面代码实现,Intent携带信息返回上一个界面实现基本信息的设置
- 一步步实现SDDC--多角色服务器部署
- css背景图毛玻璃,css实现背景图片的毛玻璃效果
- 迅捷cad_迅捷结构
- Yarn分布式集群操作系统
- HouseMD v0.2.1 发布,比Btrace更实用运行时诊断工具
- 防火墙阻止tftp_再谈突破TCP-IP过滤/防火墙进入内网(icmp篇)
- 单片机复位电路的简谈
- 基于139邮箱的新邮件到达免费短信提醒的研究与应用
- ssm毕设项目民宿预定管理系统20sxh(java+VUE+Mybatis+Maven+Mysql+sprnig)
- 浅谈上海装修设计公司吊顶安装的注意要点
- Power BI 字符串填充一些特定的字符补齐位数