首页 文章

MATLAB默认图形字体大小

提问于
浏览
6

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

1 回答

  • 6

    使用标准机制的 Headers 和标签不能有单独的默认字体大小 . 如果您愿意重载标签命令,那么您可以非常接近 . 最简单的方法是修改 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 .

相关问题