我使用仍未记录的HG2-Update来创建我的MATLAB图,因为它们看起来更好。
(资料来源:Yair Altman)
实际上,使用当前版本 Release 2013b ,它的效果非常好,而且没有太多问题。除了想要将数字导出为矢量图形(渲染器:'-painters'
),尤其是 pdf 。
我使用命令:
saveas(gcf,'test.pdf','pdf')
或
print(gcf,'test.pdf','-dpdf')
有rendering issues,打印件不包含整个图形,有些部件被裁剪或非默认字体无法识别。
但我真的很想和 HG2 呆在一起,而我仍然喜欢使用矢量图形。有没有解决方案或解决方法?
答案 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');