我在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,并在其顶部重新创建轴和标签。
更多&回答...