MATLAB和高质量EPS图形

15

我想要将我的MATLAB绘图导出为高质量的图像。具体来说,我想将其保存为基于矢量的文件格式,如EPS或SVG。

I have tried print and saveas commands:
saveas(h,'myFileName','epsc2');
print('-r150','-depsc2', 'myFilename');
在任何情况下,这都会产生质量很差的图形部件,尽管坐标轴标签确实是矢量的。为什么MatLab在将其放入EPS之前会进行一些可怕的渲染呢?
这里展示了质量差的绘图示例:http://users.ox.ac.uk/~pemb2372/myFileName.eps 编辑:值得注意的是,如果您使用Mac查看Matlab生成的EPS文件,“预览”应用程序可能会将内部图形内容呈现为栅格化和低质量,同时将轴和标签向量化并保持高质量。这非常具有误导性,但当您在Inkscape等软件中打开该EPS文件时,质量实际上是矢量而且相当高。
编辑2:我的大学托管帐户已过期,因此您无法再查看该图。可以说,它显示了一个质量差的光栅式绘图,其中包含高质量美丽的轴线、刻度线和标签。

7
我无法解释为什么Matlab的股票功能如此差,但你可以尝试使用export_fig。它可以在Matlab文件交换平台上找到,并且帮助了我很多。如果你还没有安装ghostscript,你需要先安装它。 - aganders3
好的,谢谢 - 我会研究一下并回报。 - jtromans
4个回答

13

我想分享一下我遇到的问题以及我是如何解决它的...

由于默认设置了错误的渲染器,我的结果非常糟糕。在我的startup.m中,我启用了zbuffer渲染器。这是一个eps输出的示例。

Crop of output eps

我使用以下命令生成了该eps输出:print(gcf,'-depsc2','filename.eps')。这个eps文件显然是栅格化的,这让我对Matlab很生气。然后,我突然想到——也许我的默认渲染器zbuffer正在干扰图像保存过程。因此,我加入了以下代码:

set(gcf,'renderer','painters')

并且像之前一样运行print命令,这是输出结果:

第二个输出eps的裁剪版

请注意,我只是以100%的比例截取了eps输出文件的屏幕截图。我可以确认第二张图片实际上是矢量图。这里有一个关于在MATLAB中选择渲染器的好问题/解释。


1
谢谢分享。这个基本问题真的不应该给大家带来这么多头疼! - jtromans
1
注意:在“print(..)”命令的第二个参数中应为“'-depsc2'”,而不是“'depsc2'”。 - Evgeni Sergeev
@EvgeniSergeev - 对的,我的错!我已经进行了更正。 - David_G

11

在MATLAB文件交换中心上,export_fig函数是一种相对可靠的方法,可以准确地将MATLAB中的图形导出为eps和pdf(以及位图格式)。

plot2svg函数同样来自于该交换中心,可以将图形导出为svg格式。它提供了一些额外的好处,例如能够将半透明的补丁对象以矢量格式导出。

这篇博客文章中给出了导出方法的比较。


export_fig 是老大。 - Ahmed Fasih

11

Matlab可以将输出转换为PDF格式,比EPS格式具有更好的质量,但需要设置合适的边距和字体大小。

编辑: 示例与EPS相似,如在print的帮助文件中所解释的那样:

saveas(gcf,'filename.pdf')
或者
print('-dpdf','filename.pdf')
你可能还想查看你的图形的 PaperSize PaperPosition PaperUnits 属性(通过 set get 函数)。编辑:另一种选择是使用FileExchange上可用的功能之一,例如由@user664303提到的。我个人在与LaTeX一起使用时最喜欢的是matlab2tikz,其最新版本可从GitHub获取。结合TikZ的 external 库,我认为这提供了一些最好的图形。可能最好还要提到我自2012年以来一直积极参与 matlab2tikz 项目。

你能提供一个例子吗? - jtromans
我添加了一些小例子,它们与EPS案例几乎完全相同,没有太大区别。 - Egon
虽然有点傻,但我认为分享这个小知识点可能是值得的。我遇到问题的部分原因是 Mac OS X 上的“预览”没有正确地渲染图像。这使它们看起来更糟糕,加剧了我的问题。教训是,使用适当的图像编辑器来预览您的文件! - jtromans

0

我总是通过Pythonmatplotlib库获取最终图表(那些应该插入论文和出版物中的图表)。

你可以放心使用生成的图表,无论是.pdf还是.eps格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接