MATLAB默认图形字体大小

Han*_*myo 6 matlab default-value font-size matlab-figure

我发现我可以放入set(0, 'DefaultAxesFontSize',14)一个startup.m文件,然后更改我的数字的刻度,轴标签和标题的默认字体大小.是否可以为标题或轴标签设置单独的默认字体大小?

Str*_*Bad 6

使用标准机制的标题和标签不能有单独的默认字体大小.如果您愿意重载标签命令,那么您可以非常接近.最简单的方法是修改xlabel以允许使用默认字体.你需要添加

if ~isempty(getappdata(ax, 'DefaultAxesXLabelFontSize'))
    set(h, 'FontSize', getappdata(ax, 'DefaultAxesXLabelFontSize'));
else
    if ~isempty(getappdata(get(ax, 'parent'), 'DefaultAxesXLabelFontSize'))
        set(h, 'FontSize', getappdata(get(ax, 'parent'), 'DefaultAxesXLabelFontSize'));
    elseif ~isempty(getappdata(0, 'DefaultAxesXLabelFontSize'))
        set(h, 'FontSize', getappdata(0, 'DefaultAxesXLabelFontSize'));
    end
end
Run Code Online (Sandbox Code Playgroud)

就在此之前

set(h, 'String', string, pvpairs{:});
Run Code Online (Sandbox Code Playgroud)

如果您不想修改核心文件,则可以重载 xlabel

function varargout = xlabel(varargin)
    ax = axescheck(varargin{:});
    if isempty(ax)
      ax = gca;
    end
    oldPath = pwd;
    cd([matlabroot, filesep, 'toolbox', filesep, 'matlab', filesep, 'graph2d']);
    xlabel = str2func('xlabel');
    cd(oldPath);

    oldFontsize = get(ax, 'FontSize');
    if ~isempty(getappdata(ax, 'DefaultAxesXLabelFontSize'))
        set(ax, 'FontSize', getappdata(ax, 'DefaultAxesXLabelFontSize'));
    else
            if ~isempty(getappdata(get(ax, 'parent'), 'DefaultAxesXLabelFontSize'))
                set(ax, 'FontSize', getappdata(get(ax, 'parent'), 'DefaultAxesXLabelFontSize'));
        elseif ~isempty(getappdata(0, 'DefaultAxesXLabelFontSize'))
                set(ax, 'FontSize', getappdata(0, 'DefaultAxesXLabelFontSize'));
           end
    end
    varargout{1:nargout} = xlabel(varargin{:});
    set(ax, 'FontSize', oldFontsize);
    if ~nargout
        varargout = {};
    end
end
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,您都可以使用设置默认字体大小

setappdata(0, 'DefaultAxesXLabelFontSize', 36)
Run Code Online (Sandbox Code Playgroud)

要么

setappdata(gcf, 'DefaultAxesXLabelFontSize', 36)
Run Code Online (Sandbox Code Playgroud)

要么

setappdata(gca, 'DefaultAxesXLabelFontSize', 36)
Run Code Online (Sandbox Code Playgroud)

请注意,它使用setappdata和不使用set.