How to change font size of x axis?

33,003

I always do it in the following way:

plot(X)
set(gca, 'FontName', 'Arial')
set(gca, 'FontSize', 12)
ylabel('Label Y axis')
xlabel('Label X axis')

In this way, the axis and the label will have the requested font and size. It is important to put 'xlabel' and 'ylabel' after the 'set'. The order in this case matters.

There is other way to set the fonts for the xlabel, ylable, legend, plot as below; it may complement the upper answer:

% Define values
linewidthnumber = 2;
legendfontsize = 12;
labelfontsize = 12;
axisfontsize = 12;
custom_plot_handle_name = plot(x);
custom_legend_handle_name = legend();
custom_x_label_name = xlabel();
custom_y_label_name = ylabel();

% Set the parameters now to the given values
set(h, 'Linewidth', linewidthnumber);
set(custom_legen_handle_name,'FontSize', legendfontsize);
set(custom_x_label_name, 'FontSize', labelfontsize);
set(custom_y_label_name, 'FontSize', labelfontsize);
set(gca, 'FontSize', axisfontsize);
Share:
33,003
Admin
Author by

Admin

Updated on January 23, 2020

Comments

  • Admin
    Admin over 4 years

    Is there any way to change the font size property of x axis in MATLAB for a figure? I need to change the size of the values in x axis (not the title, that one could modify with xlabel property). I have the next piece of code:

    %% Some figure properties:
    width=15;height=20;alw=0.75;
    
    %% Figure:
    for i=1:8
          figure;set(gcf,'color','white');
          pos=get(gcf, 'Position');
          set(gcf, 'Position', [pos(1) pos(2) width*100, height*100]);
          set(gca, 'LineWidth', alw);axis off;
          axes('position',[0.06 0.08 0.87 0.38])
          plot(0:24,s(i).obs(:,1),'linewidth',2,'color','b');hold on;
          plot(0:24,s(i).sim(:,1)-273.15,'linewidth',2,'color','r');
          legend('Obs','Sim','location','northeastoutside');
          set(gca,'xtick',0:24,'xticklabel',0:24);
          set(gca,'ytick',2:2:28,'yticklabel',2:2:28);
          xlabel('Hour');ylabel('[°C]');axis([0 24 2 28]);grid on;
          axes('position',[0.06 0.53 0.87 0.38]);
          plot(s(i).time.obs,s(i).serie.obs,'b');hold on;
          plot(s(i).time.sim,s(i).serie.sim-273.15,'r');
          datetick('x','myy');axis tight;grid on;
          legend('Obs','Sim','location','northeastoutside');
          title([s(i).name ', porcNaN: ' num2str(roundn(s(i).rnan,-1)) ...
              '%, period: '  datestr(s(i).period(1,:),20) ' - '...
               datestr(s(i).period(2,:),20)],'fontsize',12);
          ylabel('[°C]');set(gca,'fontsize',8)
          image_name=['temp_sup_' s(i).name];
          print(image_name,'-dpng','-r600')
    end
    

    "s" is a struct. The problem is the values in the x axis of the second plot (the figure above), datetick put all months and years values, I need this information (each one month), but they're very close together. I know the "fontsize" property, but this property change the font size in the two axis (x and y), and I need only change the x axis.

  • jvriesem
    jvriesem over 9 years
    AWESOME. Just FYI: unlike some others' solutions, this method DOES work for semilog and loglog plots. I'd guess it works generally.