我希望将我的MATLAB图输出为高质量图.具体来说,我想将其保存为基于矢量的文件格式,如EPS或SVG.
I have tried print and saveas commands:
saveas(h,'myFileName','epsc2');
print('-r150','-depsc2', 'myFilename');
Run Code Online (Sandbox Code Playgroud)
在所有情况下,尽管轴标签确实是矢量,但这会产生质量差的图形部分.为什么MatLab在将其放入EPS之前会做一些可怕的渲染?
这里质量差的情节示例:http: //users.ox.ac.uk/~pemb2372/myFileName.eps
编辑: 值得注意的是,如果您使用Mac查看来自Matlab的EPS文件,"预览"应用可能会渲染内部图形内容光栅化和质量差,同时保持轴和标签矢量化和高质量.这是非常误导的,但是当您在例如Inkscape中打开所述EPS文件时,质量实际上是矢量且非常高.
编辑2: 我的大学托管帐户已过期,因此您无法再查看该图.我只想说它在高质量的美丽轴线,刻度线和标签内显示出质量差的光栅样式.
Dav*_*d_G 12
我想我会分享我的问题,以及我如何克服它......
我得到了可怕的结果,因为我将错误的渲染器设置为默认值.在我startup.m,我zbuffer启用了渲染器.这是一个示例eps输出.

我做了每股收益与输出:print(gcf,'-depsc2','filename.eps').这个eps是如此明显的光栅化.这让我对matlab很生气.然后,我有一个脑波 - 也许我的默认渲染器zbuffer干扰了图像保存过程.所以,添加行:
set(gcf,'renderer','painters')
Run Code Online (Sandbox Code Playgroud)
和以前一样运行print命令,输出如下:

请注意,我只是将eps输出文件的屏幕截图设为100%.我可以确认第二张图像实际上是矢量.关于在MATLAB中选择渲染器,这是一个很好的问题/解释.
use*_*303 11
MATLAB文件交换中的export_fig函数是在MATLAB 中将数字精确导出为eps和pdf(以及位图格式)的一种相当可靠的方法.
该plot2svg功能,还从文件交换,让你在SVG格式导出.它提供了一些额外的好处,例如能够以矢量格式导出半透明补丁对象.
此博客文章中给出了导出方法的比较.
Ego*_*gon 10
Matlab可以以比EPS更好的质量导出为pdf,但有自己的注意事项,即设置合适的边距和字体大小.
编辑:示例类似于EPS案例,例如在以下帮助中解释print:
saveas(gcf,'filename.pdf')
Run Code Online (Sandbox Code Playgroud)
要么
print('-dpdf','filename.pdf')
Run Code Online (Sandbox Code Playgroud)
你可能也想看看的PaperSize,PaperPosition和PaperUnits你的身材的特性(通过手段set和get功能).
编辑:另一种选择是使用上提供的功能之一FileExchange如@ user664303下文提到的那些.我个人最喜欢使用的是LaTeX matlab2tikz,最新版本可以从GitHub获得.与externalTikZ库一起,我认为这提供了一些最好的图表.也许最好提一下,matlab2tikz自2012年以来我一直积极参与该项目.
| 归档时间: |
|
| 查看次数: |
44679 次 |
| 最近记录: |