MATLAB默认图形字体大小

6

我发现可以在startup.m文件中添加set(0, 'DefaultAxesFontSize',14),这将更改图形的刻度、坐标轴标签和标题的默认字体大小。是否有可能为标题或坐标轴标签设置单独的默认字体大小?


1
相关说明:我检查了get(0,'Factory')get(0,'default'),除了上面提到的那个之外,没有看到任何与图形字体大小有关的内容... - Hanmyo
1
上次我检查(Matlab2010b)时,除了DefaultAxesFontSize和DefaultTextFontSize之外,没有默认的字体大小。而且我认为他们没有添加它。 - bdecaf
1个回答

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

立即前

set(h, 'String', string, pvpairs{:});

如果您不想修改核心文件,可以覆盖 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

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

setappdata(0, 'DefaultAxesXLabelFontSize', 36)

或者

setappdata(gcf, 'DefaultAxesXLabelFontSize', 36)

或者

setappdata(gca, 'DefaultAxesXLabelFontSize', 36)

请注意,它使用的是setappdata而不是set

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接