【发布时间】:2011-01-26 12:30: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。
【问题讨论】:
-
实际上对我来说
zbuffer渲染器生成了一个大小与openglone 相似的光栅化文件 -
是的,对我来说速度是一样的,但我认为如果使用更复杂的图表,其中点不会被其他点隐藏太多,opengl 会更快。
-
opengl 不能在终端模式下工作,在 Matlab 中输入
opengl info会告诉你什么时候处于终端模式? -
>> opengl info 警告:OpenGL 加载失败。
-
> zbuffer 渲染器生成了一个大小类似于 opengl 的光栅化文件。当我不处于真正的终端模式(没有-nodisplay)时,它也发生在我身上。图窗口出现在桌面上。