Exporting figure to pdf: legend text extends beyond frame etc.

18 次查看(过去 30 天)
I would like to export a figure exactly as seen when opened in Matlab. However, in the resulting pdf file the legend text extends beyond the frame and the title partly overlaps with itself. These issues do not occur when exporting to png.
clc;close all;
d=dir('*.fig');
for i = 1:1%length(d)
fn=d(i).name;
myfn=openfig(fn)
%set(myfn,'PaperPositionMode','auto');
print(myfn,strrep(fn,'fig','pdf'),'-dpdf');
%saveas(gca, strrep(fn,'fig','pdf'), 'pdf');
close all
end
Any help would be appreciated, since I already tried several suggestions from the forum, but none worked so far.

采纳的回答

Richard Quist
Richard Quist 2016-5-23
I think the issue you're seeing is because the font used in the generated PDF file is not the same as the font specified in the figure.
In the example figure you posted, both the title and the legend are using Calibri as the font. The exported PDF file uses Courier instead.
MATLAB supports a small set of fonts when exporting to PDF and PostScript, and Calibri is not one of the fonts that is supported. If the font isn't supported a substitution occurs when exporting, and in this case Courier is being used.
If you set the axes and legend text to use Helvetica instead you should see better results.
% this assumes ax and leg are handles to the axes and legend objects:
set(ax, 'FontName', 'Helvetica');
set(leg, 'FontName, 'Helvetica');
  1 个评论
Brendan Finch
Brendan Finch 2016-5-23
Thanks, that worked
This might be a bit overkill, but it's good enough:
clc;close all;
d=dir('*.fig');
for i = 1:length(d)
fn=d(i).name;
myfn=openfig(fn)
set(myfn,'PaperPositionMode','auto');
set(gca,'FontName', 'Helvetica')
axes = findobj(gcf,'type','axes')
set(findall(axes,'type','text'),'FontName', 'Helvetica')
set(findall(gcf,'type','text'),'FontName', 'Helvetica')
set(findall(myfn,'-property','FontName'),'FontName','Helvetica')
legend = findobj(gcf,'Type','legend')
set(legend,'FontName', 'Helvetica')
print(myfn,strrep(fn,'fig','pdf'),'-dpdf','-painters');
close all
end

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Legend 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by