2014-11-04 2 views
0

Я пытаюсь заставить Matlab изменить маркировку на моих контурных графиках примерно на час. Когда я перехожу к изменению XTickLabel или XTick, он просто полностью удаляет мою ось x! Удручающая и беспричинная вещь заключается в том, что я делаю точно, что все help pages и help forums просят меня сделать - я честно не понимаю, почему это не работает.Matlab и XTickLabel

Следовательно, я здесь.

Мой код построения (знание функции не должно быть обязательным - код довольно интенсивный). Однако это 2D-контурный график с действительными данными и диапазонами - оси являются проблемой, а не графикой):

contourf(time,f,power,levels) 
    colormap(jet(levels)) 
    set(gca,'XTickLabelMode','manual') 
    set(gca, 'XTick', 0:23); 
    set(gca, 'XTickLabel', {'0';'1';'23'}); 
    xlabel('Time (UT)') 
    ylabel('Frequency (Hz)') 
    caxis([0,8]) 
    axis([0 StopTime 0 0.1]) 

Любая помощь была бы принята с благодарностью!

+0

Заговор - это или не проблема? ;) Кроме того, возможно, стоит соединить справочную страницу, о которой вы упомянули. – JoErNanO

+0

http://www.mathworks.com/matlabcentral/answers/92565-how-do-i-control-axis-tick-labels-limits-and-axes-tick-locations http: //www.mathworks. com.au/help/matlab/ref/axes-properties.html Ни одна из них не помогла - насколько я знаю, я делаю именно то, что они говорят мне! И сам график не является проблемой - это оси, которые мне нужно изменить (в частности, метки/тики). – Yoshi

+0

Как вы пытаетесь изменить * XTickLabel или XTick *? И что вы намерены изменить? – Divakar

ответ

3

решаемые:

я понял, что «XTick» опиралась на текущих значениях массива я использовал, чтобы определить ось х. Я не могу просто предположить, что Matlab будет равномерно размещать новый массив (по крайней мере, если есть способ сделать это, я не знаю). Так, так как у меня есть 85,680 точек данных на моей оси Х, я просто пересчитывается его:

set(gca, 'XTick', 0:3570:85680) 
    set(gca, 'XTickLabel', num2cell(0:24)) 

Мораль истории: Matlab не позволяет произвольно приклеить новую ось над старым, используя эти два функции.

0

Вы можете использовать клеточные массивы, чтобы определить ticks и tick-labels, а затем использовать их с вызовом функции set, чтобы сделать его более изящным -

xtick_label_cellarr = num2cell(0:24) 
xtick_cellarr = linspace(0,85680,numel(xtick_label_cellarr)) 

set(gca, 'XTick',xtick_cellarr) 
set(gca, 'XTickLabel',xtick_label_cellarr) 
+0

Спасибо за предложение - но это не сработало. Насколько я знаю, то, что у меня было ранее, было эквивалентно этому. – Yoshi

+1

@Yoshi Можете ли вы поделиться скриншотами с тем, что вы получаете, и тем, что вы намереваетесь получить? – Divakar

+0

http://i62.tinypic.com/23mm23o.jpg – Yoshi

1

У вас есть окончательная axis([0 StopTime 0 0.1])) команды, которая очищает ваш участок, путь создания новая новая ось. Вот почему все ваши существующие сюжеты исчезли. Попробуйте удалить его:

contourf(time,f,power,levels) 
colormap(jet(levels)) 
set(gca,'XTickLabelMode','manual') 
set(gca, 'XTick', 0:23); 
set(gca, 'XTickLabel', {'0';'1';'23'}); 
xlabel('Time (UT)') 
ylabel('Frequency (Hz)') 
caxis([0,8]) 

Теперь вопрос становится: ваши тики разумно размещены для данных, которые вы представляете? Не зная данных, я не могу ответить на это за вас. Итак, теперь мяч находится на вашем дворе. ;)

Смежные вопросы