我在Matlab中准备了一个使用图例来识别各种痕迹的图。我已经适当地调整了图例和轴标签中的字体大小,以生成看起来很好看的图。这些图在屏幕上看起来很好,但是当我保存时 - 对于任何合理的格式(PDF,PNG,BMP等),图例中的字体大小信息都会被故意忽略。
这导致图形和子图的图例看起来很可怕,因为字体会扩展回默认大小,运行子图,重叠等。
我实际上可以看到字体在保存操作期间简要地恢复为默认值,然后更改回正确的大小。如何避免这个问题并迫使Matlab做出明显正确和有意的事情?
设置字体的示例代码:
set(gca,'xticklabel',{'1','2', '4', '8', '16', '32', '64', '128', '256'}, 'fontsize', 4)
leg = legend('One Text, Two Text','Red Text, Blu Text','Location','southwest')
set(leg, 'fontsize', 2);
这是Windows 10下的Matlab 2016a。
答案 0 :(得分:0)
您是否尝试过检查以下选项:
Preference
- > MATLAB
- > Figure Copy Template
- > Copy Options
- > Size
- > Match figure screen size
?
答案 1 :(得分:0)
您可以将'FontUnits','points'
添加到set
功能。根据您保存绘图的方式,您可以使用print
代替MATLAB的另存为函数。
下面是我用来打印数据的脚本。它基于this:
filename = 'myfile'; % figure to be printed
uiopen(myfile,1)
axis([0 200 -0.1 0.15]) % scale the axis
set(gca,...
'Units','normalized',...
'YTick',-0.1:0.05:0.15,...
'XTick',0:50:200,...
'Position',[.15 .2 .75 .7],...
'FontUnits','points',...
'FontWeight','normal',...
'FontSize',9,...
'FontName','Times')
ylabel({'f(x)'},... % {} allows to add Latex code in the label
'FontUnits','points',...
'interpreter','latex',...
'FontSize',14,...
'FontName','Times')
xlabel({'$x$'},...
'FontUnits','points',...
'interpreter','latex',...
'FontWeight','normal',...
'FontSize',14,...
'FontName','Times')
legend({'$f(x) = x$'},...
'FontUnits','points',...
'interpreter','latex',...
'FontSize',14,...
'FontName','Times',...
'Location','NorthEast')
title({'This is: $f(x) = x$'},...
'FontUnits','points',...
'interpreter','latex',...
'FontWeight','normal',...
'FontSize',14,...
'FontName','Times')
title('This is: $f(x) = x$')
legend('$f(x) = x$')
print(filename,'-depsc2'); % print to filename.eps