我想将一些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,但它总是同样的问题。在这个例子中,减少数据点的数量是有效的,但对我来说并不常见。
有没有选择或解决方法?
答案 0 :(得分:3)
解决方案是指定应使用painter
renderer:
print('Sinetest','-dpdf', '-painters');
如果您保存到矢量图形文件并且图中
RendererMode
属性设置为'auto'
,然后打印自动尝试使用 画家渲染器。如果要确保输出格式 是一个真正的矢量图形文件,然后指定Painters渲染器。
请注意,这可能会导致渲染时间过长,如文档中所述:
有时,使用'-painters'选项保存文件会导致更长时间 渲染时间[...]