Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change font size of x axis? [closed]

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.

like image 840
Andrés Martínez Olivares Avatar asked Feb 11 '14 19:02

Andrés Martínez Olivares


1 Answers

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);
like image 88
Marc Manzano Avatar answered Oct 14 '22 05:10

Marc Manzano