Значения останавливаются где-то, чего не должно быть - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть 365 (дней) ввода для моей графики, но где-то она перестает создавать графику. Это мой графический результат: Моя графика

Вот оригинальная графика, которую я должен получить: Оригинальная графика

Вот весь мой код:

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];
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')

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018
ax.XAxis.TickLabels = {'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'}';

Названия этикеток изменены, но нет упоминания о том, где эти этикетки должны появиться.По умолчанию они будут равномерно распределены по 500-дневному графику (ax.XAxis.Limits = [0 500];)

. Установите правильные положения тиков

ax.XAxis.Tick=cumsum([31 28 31 30 31 30 31 31 30 31 30 31])-30;
.
0 голосов
/ 14 ноября 2018

Вы устанавливаете метку 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')

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...