Как я могу установить ось X на сегодняшний день, применяя mutliplotyyy? - PullRequest
1 голос
/ 26 июня 2019

Я пытаюсь построить три временных ряда с различным временным разрешением в одном графике, применяя multiplotyyy . К сожалению, я не могу установить ось X на datetick. Есть идеи, как это решить? Спасибо!

Применяемый подход основан на разном временном разрешении matlab для одного графика с двумя осями, который работает хорошо.

%time 5min interval for dataset1
xstart1 = datenum('01/04 10:00', 'dd/mm HH:MM');
xend1 = datenum('02/04 14:00', 'dd/mm HH:MM');
Dat1 = xstart1:1/24/12:xend1;


%time 10min interval for dataset2 and dataset3
xstart2 = datenum('01/04 13:00', 'dd/mm HH:MM'); 
xend2 = datenum('02/04 14:00', 'dd/mm HH:MM');
Dat2 = xstart2:1/24/6:xend2;

%time axis (different temporal resolution)
Dat = xstart1:1/12:xend1;

%data
dataset1 = rand(1,337).';
dataset2 = rand(1,151).';
dataset3 = rand(1,151).';

%plot
ylabels{1}='dataset1';
ylabels{2}='dataset2';
ylabels{3}='dataset3';
[ax,hlines]=multiplotyyy({Dat2, dataset2}, {Dat2, dataset3}, {Dat1, dataset1}, ylabels);
set(ax(1), 'XTick', Dat);
datetick('x', 'dd/mm HH:MM', 'keepticks', 'keeplimits');
legend(cat(1,hlines{:}),'dataset1','dataset2','dataset3','location','w')

1 Ответ

1 голос
/ 26 июня 2019

Мне кажется, я нашел проблему

Прочитайте документацию datenum :

Функция datenum создает числовой массив, который представляет каждый момент времени какколичество дней с января 0, 0000.

Значения Dat являются очень большими числами.

Полагаю, вы хотите, чтобы метки XTick имели формат даты, а не секунды с BC.

Используйте datestr для преобразования Dat в нужный формат и преобразуйте его в массив ячеек.
(после строки Dat = xstart1:1/12:xend1;)
Используйте следующее ('hh/mm' - это просто пример формата):

DateStr = cellstr(datestr(Dat, 'hh/mm'));

Установить XTickLabel после настройки XTick:

set(ax(1), 'XTick', Dat);
set(ax(1), 'XTickLabel', DateStr);

Результат:
Tick

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