登录论坛

查看完整版本 : 在MATLAB中将“大量”图形保存为PDF-渲染问题


poster
2019-12-10, 20:30
我在MATLAB中生成了一个包含大量元素(100000+)的图形,并希望将其保存到PDF文件中。使用zbuffer或painters渲染器,我得到了一个非常大且缓慢打开的文件(超过4 Mb)-所有点均为矢量格式。使用OpenGL渲染器将PDF中的图形光栅化,可以使用该图,但对于文本标签则不好。文件大小约为150 Kb。

尝试使用以下简化代码,例如:

x=linspace(1,10,100000); y=sin(x)+randn(size(x)); plot(x,y,'.') set(gcf,'Renderer','zbuffer') print -dpdf -r300 testpdf_zb set(gcf,'Renderer','painters') print -dpdf -r300 testpdf_pa set(gcf,'Renderer','opengl') print -dpdf -r300 testpdf_op 带有多个轴和不同类型的图的实际图形要复杂得多。

有什么方法可以栅格化图形,但将文本标签保留为矢量?

OpenGL的另一个问题是在Mac OSX的终端模式(-nosplash -nodesktop -nodisplay)下不起作用。看起来不支持OpenGL。我必须使用终端模式进行自动化。我运行的MATLAB版本是2007b。 Mac OSX服务器10.4。



回答:

这是一个有趣的。您的问题不是Matlab,而是Ghostscript(Matlab至少在Windows上通过调用Ghostscript创建PDF)。当我跑步

x=linspace(1,10,100000); y=sin(x)+randn(size(x)); plot(x,y,'.') print -dpsc2 test.ps 我有一个2Mb PS文件(当然是所有矢量),压缩后就变成了164Kb ZIP。将PS转换为PDF时,可能会期望获得几乎相同的结果,但是ps2pdf test.ps产生了4Mb文件!

由于您使用的是Mac,因此您可能拥有Distiller。我尝试一下-如上生成PS文件,然后通过Distiller运行它们;您应该获得150K的矢量PDF。

如果您坚持光栅化 ,我建议您将没有任何轴或标签的图形打印到tiff上,打开tiff,并在其顶部重新创建轴和标签。



更多&回答... (https://stackoverflow.com/questions/2427573)