Установка часовой оси X для построения графика Accumarray в Matlab

В Matlab я использовал accumarray() для создания нового вектора с 3 столбцами целых чисел. Колонка 1: дата (только день); Колонка 2: час; Колонка 3: Пример значения.

19.0000    9.0000   25.6937
19.0000   10.0000   30.2616
19.0000   11.0000   32.2840
19.0000   12.0000   28.4867
19.0000   14.0000   35.4055
19.0000   16.0000   48.3377

Прямо сейчас мой код для построения графика включает в себя следующее;

xdate = datenum(year,month,day,hourVector,minutes,seconds);

plot(xdate,sampleValue,'-x','MarkerSize',10)

datetick('x','ddd HHPM')

У меня возникают проблемы с поиском метода, где ось X помечается раз в час (или 2 часа). Спасибо

1 ответ

Решение

Я полагаю, вы просто хотите, чтобы отметки x были разнесены на 1 час, независимо от интервала данных? Из вашего примера я не вижу, что у вас обязательно есть точка данных раз в час.

Если мое понимание верно, попробуйте заменить

datetick('x','ddd HHPM')

со следующим:

hr_step = 0.0417; % increasing datenum by this amount will advance date by 1 hour
tick_xdate = min(xdate):hr_step:max(xdate);
set(gca,'XTick',tick_xdate)
datetick('x','ddd HHPM','keepticks') % 'keepticks' option forces the use of tick_xdate
Другие вопросы по тегам