MATLAB怎么生成带透明对象的矢量图。

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

MATLAB怎么生成带透明对象的矢量图。

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\');

MATLAB怎么生成带透明对象的矢量图。

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

print E:graphic.eps -r300 -opengl

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

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

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

MATLAB怎么生成带透明对象的矢量图。MATLAB怎么生成带透明对象的矢量图。

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

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

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

MATLAB怎么生成带透明对象的矢量图。MATLAB怎么生成带透明对象的矢量图。

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

MATLAB怎么生成带透明对象的矢量图。MATLAB怎么生成带透明对象的矢量图。

仍然不对,问题跟直接输出的 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 文件当然是极好的,又能透明又是矢量,比如下面这张,不管你怎么缩放现在这个页面都能保证一直是清晰的

MATLAB怎么生成带透明对象的矢量图。

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

MATLAB怎么生成带透明对象的矢量图。

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

MATLAB怎么生成带透明对象的矢量图。MATLAB怎么生成带透明对象的矢量图。

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

MATLAB怎么生成带透明对象的矢量图。

导出,真•矢量图达成!

MATLAB怎么生成带透明对象的矢量图。MATLAB怎么生成带透明对象的矢量图。

继续放大:

MATLAB怎么生成带透明对象的矢量图。

最后总结一下工作流:

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

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

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

本文来自网络投稿,来自作者春天。不代表酷牛教程立场,如若转载,请注明出处:https://www.xukn.com/11576.html

(0)
春天春天
上一篇 2023-05-13 11:22
下一篇 2023-05-13 11:22

相关推荐

  • AI标尺功能在哪?助你作图更规范。

    AI 全称 Adobe Illustrator,广泛应用于出版、多媒体和在线图像的 矢量图 编辑软件。AI的标尺功能可以帮助我们 作图 时更加的规范,合理运用辅助线会让效率更高。如...

    2023-05-20 其他教程
    0240
  • 小编教你Matlab三维图如何绘制。

    在计算机领域,有时候需要应用到三维曲面图,在这种情况下,我们首先要知道三维数据,分别为x,y,z的值,然后在借助Matlab工具来绘制三维曲面图。有了Matlab的帮助,可以很简单...

    2023-06-14
    0160
  • 我来分享ps设计毛笔笔刷矢量图具体操作方法。

    ps是我们工作中经常使用的软件,但是你们知道ps如何设计毛笔笔刷矢量图吗?今日在此就为大伙带来了ps设计毛笔笔刷矢量图的具体操作方法。 1、首先从网络上下载需要的笔刷,启动ps后,...

    2023-06-07 PC教程
    0160
  • 我来分享ai如何制作浪漫的樱花背景矢量图

    ai如何制作浪漫的樱花背景矢量图?当我们想用ai制作背景矢量图应该怎么办呢?今天给大家带来一种制作樱花背景矢量图的具体方法步骤,让我们一起来看看吧。 方法/步骤 1、先用矩形工具画...

    2023-07-01 PC教程
    0160
  • 分享Matlab教程。

    MATLAB是一款数学软件,主要应用于算法开发、数据可视化等操作,MATLAB可以用博大精深来形容,要想彻底的掌握这款软件,必须得下不少功夫,本文给大家带来了MATLAB的入门教程...

    2023-06-14
    0170
  • 小编教你Matlab中如何求解积分。

    一谈起Matlab这款软件我想不少人应该都很了解,它是一款功能强大的数学软件,因此有很多人会下载使用它,但是刚接触它,想用使用它会碰到一些难题,最常见的就是Matlab中如何求解积...

    2023-06-14 PC教程
    0180
  • 小编教你怎么用Matlab解方程。

    Matlab是一款功能强大的数学软件,我们常常会使用它来解决一些数学难题,但是有时候我们刚装上这个软件的时候,就有一些问题不懂得怎么处理,比如说怎么用Matlab解方程,为了帮助大...

    2023-06-14 PC教程
    0190
  • 我来分享如何使用ai绘制扁平化的水滴矢量图

    如何使用ai绘制扁平化的水滴矢量图?ai是一款广泛应用于出版、多媒体和在线图像的工业标准矢量插画的软件。想要使用ai绘制扁平化的水滴矢量图,具体该怎么绘制?下面就是使用ai绘制扁平...

    2023-06-25 PC教程
    0170
  • 我来分享什么是矢量图

    矢量图 计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的...

    2023-08-03
    0140
  • 我来教你ps设计出简单图标矢量图具体操作方法。

    现在越来越多的用户在使用ps,那么你们晓得ps是怎么设计简单图标矢量图的吗?今日在此就为大伙带来了ps设计出简单图标矢量图的具体操作方法。 1、使用使用ps软件之后新建一个100×...

    2023-06-07 PC教程
    0200
  • 说说Matlab中表达e的操作方法介绍。

    有的新手朋友使用Matlab计算过程里,表示还不会表达e,其实很简单的,今天小编就专门为大家分享Matlab中表达e的操作方法,希望可以帮助到大家。 问题 打开Matlab之后,在...

    2023-08-08 其他教程
    0110
  • 分享Matlab安装教程。

    MATLAB是美国一家公司推出的商业数学软件,MATLAB主要用于数学领域,据介绍,MATLAB软件中包含了大量的计算算法,同时还拥有600多个工程中要用到的数学运算函数,既然这是...

    2023-06-14 PC教程
    0170
  • 小编教你AI中抠图并把位图转换成矢量图具体操作方法。

    说到AI相信你们应该都不陌生,不过你们晓得AI中抠图并把位图转换成矢量图呢?下文就带来了AI中抠图并把位图转换成矢量图的具体操作方法。 1、在AI中打开要变成矢量图的图片 2、鼠标...

    2023-06-06 PC教程
    0210
  • 教你位图怎么转换成矢量图。

    在设计的过程中,如果遇到一个较小尺寸的图片素材,又找不到更好的图片时,我们就可以使用以下五种位图转矢量图的方法将小图做成矢量图再放大,就可以获得良好的视觉体验,这些方法都是怎么转换...

    2023-06-17 PC教程
    0180
  • 教你matlab打不开怎么办

    matlab打不开怎么办?Matlab是一款著名的商业数学软件,它的功能十分强大,我们常常会使用它解决一些数学难题。最近有用户反映matlab打不开,该怎么解决?下面就是matle...

    2023-06-28
    0110

发表回复

登录后才能评论