保存数字的Matlab字体

时间:2016-12-08 02:25:40

标签: matlab plot fonts

我在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。

2 个答案:

答案 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