2013-12-18 3 views
1

Я реализую сценарий Matlab, в котором я хотел бы построить функцию следующим образом:Использование XTickLabel в черчения

figure; 
plot(Flows(:,1),Flows(:,2)); 
title(strcat('f',num2str(j),'\_2013\_0',num2str(k))); 
xlabel('Timestamp'); 
ylabel('Energy flow'); 
set(gca, 'XTickLabel', datestr(Flows(:,1))); 

потоков является матрица, которая принимает в качестве входных CSV файл, где первый столбец является Отметка стоимость. Есть 12 файлов, каждый на каждый месяц. В цикле я читаю файлы и создаю матрицу.

Flows(i,1)=datenum(Input{i,1}{1,1},'YYYY-mm-DD HH:MM:SS'); 
Flows(i,2)=Input{i,1}{1,7}; 

Однако, когда я рисую тренд, ось x показывает только дату с 1 января 00:00 до 1 января 00:36. Как я могу отобразить по оси x, по крайней мере, от 1s от «Месяца» до конца месяца? Я подозреваю, что проблема связана с маской перевода данных с номера на сегодняшний день, но я попробовал несколько масок, какой из них подходит?

+1

Я подозреваю, что вы должны отрегулируйте 'xticks' также (чтобы показать xticks в разрешении, которое вы хотите пометить). См. Пример здесь http://www.mathworks.com/matlabcentral/answers/92565; Можете ли вы предоставить свои данные? – Cici

+1

@Cici Правильно. Не совпадающий с 'XTick' с 'XTickLabel' также является распространенной ловушкой [при создании' bar'-графиков] (http://stackoverflow.com/a/20439903/2778484), так как MATLAB автоматически не создает тики, когда вы проходите мимо определенного количества очков. – chappjc

+0

@Jose Hdez, какую версию Matlab вы используете? – Lucubrator

ответ

0

Наконец, я добавил эти строки:

set(gca,'XLim',[min(Flows(:,1)) max(Flows(:,1))]); 
set(gca,'XTick',Flows(:,1)); 
set(gca, 'XTickLabel', datestr(Flows(:,1))); 

Но, когда я собираюсь построить тренд, я получаю следующее исключение,

Values must be monotonically increasing 
Смежные вопросы