使用HG2-Update和'画家'以.pdf格式将数字导出为矢量图形。渲染器工作不正常

时间:2014-08-10 13:27:08

标签: matlab plot matlab-figure matlab-hg2

我使用仍未记录的HG2-Update来创建我的MATLAB图,因为它们看起来更好。

enter image description here enter image description here (资料来源:Yair Altman)

实际上,使用当前版本 Release 2013b ,它的效果非常好,而且没有太多问题。除了想要将数字导出为矢量图形(渲染器:'-painters'),尤其是 pdf

我使用命令:

saveas(gcf,'test.pdf','pdf')

print(gcf,'test.pdf','-dpdf')

rendering issues,打印件不包含整个图形,有些部件被裁剪或非默认字体无法识别。

但我真的很想和 HG2 呆在一起,而我仍然喜欢使用矢量图形。有没有解决方案或解决方法?

2 个答案:

答案 0 :(得分:2)

使用尚未官方HG2-Update导出矢量图形是一个非常严重的问题。 .pdf -export仍然完全搞砸了。 什么工作正常是 .svg -export,除了没有正确设置边界框。

长期解决方法是: 使用'-dsvg'print - 命令)或'svg'saveas - 命令)将绘图保存为矢量图形,在开源应用程序Inkscape中打开该文件然后再次保存为 .pdf 导出区域正在绘制复选标记设置。

相当复杂,所以我找到了一种方法通过命令行直接从Matlab (Inkscape仍然需要!):

filename = 'test';
inkscapepath = '"C:\Program Files (x86)\Inkscape\inkscape.exe"';

%// save as .svg
saveas(gcf,filename,'svg')
%// open and save with "export-area-drawing" set via command line
system( [inkscapepath ' ' filename ...
         '.svg --export-area-drawing --export-pdf=' filename '.pdf'])

这需要一些时间,但目前没有任何已知问题。

此后删除svg-File:

delete([filename '.svg'])

答案 1 :(得分:1)

我遇到了同样的问题,并使用了thewaywewalk的解决方法。现在我发现了MATLAB函数" hgexport"在HG2下工作(在R2014a中)。

问题仍然是纸张尺寸。我希望对所有图形使用相同的大小,尽可能少的白框。在这里你必须设置两种尺寸:

纸张大小设置为set(gcf,'PaperSize',[width height]),图表的大小通过导出样式设置。这些设置在"导出设置"或命令行:

exp_style=hgexport('readstyle','default');
exp_style.Width = 'width';
exp_style.Height = 'height';
exp_style.Renderer = 'painters';

现在您可以导出pdf:

hgexport(gcf,'pdfname',exp_style,'Format','pdf');

PS:在HG2中,您也可以使用Latex作为刻度标签:

set(gca,'TickLabelInterpreter','latex');