matlab画布透明,MATLAB怎么生成带透明对象的矢量图

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

ac3b8641b30dde41b2309da7dcf00cf0.jpg

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

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

s=surf(peaks(30))

set(s,’facealpha’,0.5);

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

EpsFig_001.png

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

printE:graphic.eps-r300-opengl

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

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

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

EpsFig_004.png

EpsFig_009.png

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

export_figE:Graphic2.eps-r300-a2-opengl

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

EpsFig_005.png

EpsFig_010.png

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

EpsFig_006.png

EpsFig_011.png

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

plot2svg(‘E:Graphic3.svg’);

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

Graphic4.svg

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

EpsFig_002.png

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

EpsFig_007.png

EpsFig_012.png

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

EpsFig_003.png

导出,真•矢量图达成!

EpsFig_008.png

EpsFig_013.png

继续放大:

EpsFig_014.png

最后总结一下工作流:

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

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

附带说一下,本文转载自:https://capbone.com/use-matlab-to-export-vector-graphics-with-transparent-features/。这个方法只有必要对MATLAB中的带透明属性的patch、edge对象进行操作,如果仅仅是令当前窗口或当前坐标轴的背景透明,用自带的 print 和 export_fig 都能实现,没必要搞得那么复杂。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

综述:持续感知系统在边缘计算的应用

来源:《微纳电子与智能制造》随着边缘计算技术的兴起,各种各样的感知系统给人类带来了便捷高效的生活。以日常使用的手机为例,工程师为其置入了各种各样的传感器,并通过运行其上的机器学习算法,部署了很多便捷的功能。…

matlab fgoalattain,matlab优化工具箱 | 学步园

1工具箱概述1.1 功能(1)求解无约束条件非线性极小值;(2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问题和半无限极小值问题;(3)求解二次规划和线性规划问题;(4)非线性最小二乘逼近和曲线拟合;(5)非线性…

自保护、人机互动柔性织物传感器研究取得进展

来源:中国科学院宁波材料技术与工程研究所可穿戴柔性电子器件,因其柔性/拉伸性、质轻、成本低、便携等特性,被广泛应用于人体运动/人体健康的实时监测、人机/脑机交互以及机器学习等领域。但目前仍存在灵敏度及响应速度较低、检测下限较高、检…

Hibernate第十一篇【配置C3P0数据库连接池、线程Session】

Hibernate连接池 Hibernate自带了连接池,但是呢,该连接池比较简单..而Hibernate又对C3P0这个连接池支持…因此我们来更换Hibernate连接池为C3P0 查看Hibernate自带的连接池 我们可以通过Hibernate.properties文件中查看Hibernate默认配置的连接池 hibern…

npm 切换源_【分享吧】verdaccio搭建npm私有仓库

verdaccio搭建npm私有仓库前言随着前端技术的不断发展,前后端分离已成为主流趋势,这就导致了前端承受的分工压力会越来越大,前端项目也将变得十分庞杂,因此在技术方面会考虑按照业务线进行拆分成几个业务系统。这些系统之间如何共…

疫情中的人工智能和大数据“社会实验”,将如何影响我国经济社会发展

来源:三思派最近,上海市科学学研究所编制了《人工智能、大数据支撑新冠肺炎疫情防控报告(1.0版)》。报告预测,疫情过后,人们的生活和工作方式都可能向更加智能化方向发展,一个以智能化、无人化、…

IBM强化Watson对商业语言的理解能力—AI辩论一些关键技术首次商业化

来源:IBM中国2020 年 3 月 11 日,商业人工智能领域领军者 IBM[1]宣布推出几项全新的 IBM Watson 技术,旨在帮助组织机构更清晰地识别、理解和分析英语语言中某些最具挑战性的方面,从而获取更多洞察。全新的 IBM Watson 技术代表着…

删除快捷方式小箭头_修复快捷方式的箭头图标

前一天晚上,用360清理缓存文件后,早上起来一看快捷方式的箭头图标不见了,左下角变成了一片白色。试了很多方法,比如说删除iconcache.db,然后重启资源管理器等等,发现没有用。然后,装上360桌面助…

如何实现对外部php文件的调用,laravel如何引用外部文件

laravel如何引用外部文件,主视图,视图,文件,方式,内容laravel如何引用外部文件易采站长站,站长之家为您整理了laravel如何引用外部文件的相关内容。(1)、首先在app\Http\routes.php中定义路由;Route::get(view,ViewControllerview);Route::get(article,V…

清华大学人工智能深度报告:八大维度解析机器学习

来源:世界人工智能大会机器学习(Machine Learning,常简称为 ML)已经成为了当今的热门话题,从机器学习概念诞生到机器学习技术的普遍应用经过了漫长的过程,众多优秀的学者为推动机器学习的发展做出了巨大的贡…

【周末阅读】5G时代新型基础设施建设白皮书

来源:智东西【导读】当今世界,新一代信息技术与经济社会深度交融,正引领全球新一轮科技革命和产业变革,其速度、广度、深度前所未有。加快 5G 商用和人工智能、工业互联网、物联网等新型基础设施建设是发挥投资关键作用&#xff0…

pandas取出某一列_Pandas高级运算 | apply与applymap方法详解

大家好,今天我们来聊聊pandas的一些高级运算。在之前文章中,我们介绍了panads的一些计算方法,比如两个dataframe的四则运算,以及dataframe填充Null的方法。今天这篇文章我们来聊聊dataframe中的广播机制,以及apply函数…

深度|​揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活!

来源:电子工程世界AI 和 5G 与机器人技术结合,正在不断催生新的消费电子品类。AI 解决机器理解世界,以及人机交互的问题。5G 拓展机器人的活动边界,并为机器人提供更大的算力和存储空间(云协作机器人) 。根…

点击按钮,缩放图片(img.width、img.style.width、img.offsetWidth)

前几天在慕课网上看到一个关于图片缩放的教学视频,因为当时对老师使用img.width,而不是使用img.style.width而感到奇怪,所以周末得空了,想来自己试着写出来,相关视频网址如下:http://www.imooc.com/video/1111&#xf…

sql怎么继续编辑已经保存的代码_某团购CMS的GETSHELL操作代码审计

作者:会上树的猪合天智汇 0x00 写点废话在渗透测试中,获取一个webshell应该是我们不屑的追求,今天要通过这个CMS从代码的角度看一下可利用的getshell的方法。这一次的代码审计需要借助工具来定位可能存在的漏洞点,选择Seay源代码审…

测温枪的工作原理全面解析,如何测出你的温度

来源:世界先进制造技术论坛内容来源:网络测温枪,学名是“红外线测温仪”或者“红外线辐射测温仪”。它的原理是:被动吸收目标的红外辐射能量,从而获得物体温度数值。这次疫情,让这个小东西一下子&#xff0…

mysql不要放docker,Docker从入门到放弃

本文将以比较简单的的方式让大家理解docker,以平时常用到的测试环境为主,从用开始,慢慢理解docker。0x00 用docker进行漏洞测试0x01 docker运行busybox0x02 Docker 搭建运行apache-php环境0x03 用Dockerfile自动化构建可ssh登陆的镜像0x04 Do…

一个对称性解释三个宇宙学难题;引力波碰撞会发光?粘液霉菌助力寻找宇宙网 | 一周科技速览...

来源:返朴撰文 :董唯元、杨凌、顾舒晨、洪俊贤、太阁尔、姜小满目 录1. 一个对称性解释三个宇宙学难题2. 引力波碰撞会发光?3. 粘液霉菌助力寻找宇宙网4. 听,是杂质原子的声音5. 更快了!地球的大型生态系统在崩溃6. 究…

一ElasticSearch安装启动

参考官方:https://www.elastic.co/downloads/elasticsearch 转载于:https://www.cnblogs.com/tangyongathuse/p/6840231.html

结构化数据不应该被人工智能忘之脑后 !

来源:Ihab Ilyas在处理非结构化数据的问题上,人工智能和深度学习方法一直都表现出众且广为人知,无论是在自然语言处理、知识库自动构建,还是图像视频的识别和生成应用中,都有很多成熟案例。然而对于结构化数据的研究&a…