Вы устанавливаете метку text , но не метку position , позволяя MATLAB выбирать, где он хочет их видеть.В частности, ваши тики:
ax.XAxis.TickValues
ans =
0 50 100 150 200 250 300 350 400 450 500
, которые не соответствуют введенным вами меткам.Измените эти местоположения:
days = 1:365;
%Formulas of the Equation of Time
earth_tilt = -7.655*sin(2*pi*days/365)
elliptical_orbit = 9.873*sin(4*pi*days/365+3.588)
time_variation = earth_tilt + elliptical_orbit
plot(days,earth_tilt,'g--')
hold on
plot(days,elliptical_orbit,'r-.')
plot(days,time_variation,'black')
ax = gca;
ax.XAxisLocation = 'origin';
ax.XAxis.TickLabels = {'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'}';
ax.XAxis.Limits = [0 500];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ax.XAxis.TickValues=[0:30:360]; % yeah its not 100% right, change it to @Brice's answer data.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
title('Time Variation')
xlabel('Day of The Year','FontWeight','bold')
ylabel('Minutes','FontWeight','bold')
legend({'Earth Elliptic Orbit','Tilt of Earth Axis','Orbit+Tilt'},'FontSize',14)
% Location information of legend
set(legend, 'Location', 'NorthWest')

Вам необходимо изменить значения TickValues на правильные дни (я предполагал, что в каждом месяце есть 20 дней) и, возможно, ограниченияиз Xaxis
, чтобы избежать ненужного пустого пространства после данных, я оставляю это читателю, так как полагаю, что у спрашивающего было 500 по какой-то причине.