导出到矢量图形会因大量数据点而失败

时间:2017-12-04 10:44:23

标签: matlab vector graphics

我想将一些MATLAB图导出为矢量图形用于演示。在大多数情况下,使用print - 命令,例如:

set(0,'defaultAxesTickLabelInterpreter','Latex')
set(0,'defaultTextInterpreter','Latex')

t=linspace(0,6,6000);
s=sin(t);

figure
for spl=1:16
    subplot(4,4,spl);
    plot(t,s,'k')
end

print('Sinetest','-dpdf');

但是一旦数据点的数量(或预期的文件大小)变得太大,例如使用t=linspace(0,6,7000);该方法就失败了:而不是可缩放的矢量图形,一个丑陋的像素怪物被保存在.pdf文件中。我试图使用其他文件格式,例如.emf,.eps,.svg(svg是我实际需要的)而不是.pdf,但它总是同样的问题。在这个例子中,减少数据点的数量是有效的,但对我来说并不常见。

有没有选择或解决方法?

1 个答案:

答案 0 :(得分:3)

解决方案是指定应使用painter renderer

print('Sinetest','-dpdf', '-painters');
  

如果您保存到矢量图形文件并且图中RendererMode   属性设置为'auto',然后打印自动尝试使用   画家渲染器。如果要确保输出格式   是一个真正的矢量图形文件,然后指定Painters渲染器。

请注意,这可能会导致渲染时间过长,如文档中所述:

  

有时,使用'-painters'选项保存文件会导致更长时间   渲染时间[...]