2012-04-20 13 views
6

Ho trovato che posso mettere set(0, 'DefaultAxesFontSize',14) in un file startup.m, che quindi cambia la dimensione del carattere predefinito di zecche, le etichette degli assi e il titolo delle mie figure. È possibile avere una dimensione del carattere predefinita per le etichette del titolo o degli assi?MATLAB carattere predefinito dimensioni dimensioni

+1

Nota pertinente: Ho controllato 'get (0, 'Factory')' e 'get (0, 'default')' e non ho visto nulla relativo alla dimensione del font di figura diversa da quella menzionata sopra ... – Hanmyo

+1

L'ultima volta che ho controllato (Matlab2010b) non esisteva alcun valore predefinito per fontsizes oltre a DefaultAxesFontSize e DefaultTextFontSize. E non penso che l'abbiano aggiunto. – bdecaf

risposta

6

Non è possibile avere una dimensione di carattere predefinita per titoli ed etichette con i meccanismi standard. Se sei disposto a sovraccaricare i comandi di etichettatura, allora puoi venire molto vicino. Il più semplice sarebbe modificare xlabel per consentire un carattere predefinito. Si avrebbe bisogno di aggiungere

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 

immediatamente prima

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

Se non si desidera modificare un file core si può sovraccaricare 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 

In entrambi i casi, è possibile impostare il dimensione carattere predefinita con

setappdata(0, 'DefaultAxesXLabelFontSize', 36) 

o

setappdata(gcf, 'DefaultAxesXLabelFontSize', 36) 

o

setappdata(gca, 'DefaultAxesXLabelFontSize', 36) 

Nota che usa setappdata e non set.