Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我在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,并在其顶部重新创建轴和标签。 更多&回答... |
![]() |
![]() |