2016-12-06 2 views
0

Я пытаюсь создать тепловую карту 24x366 с использованием imagesc с осью x, помеченной 13 равномерно разнесенными точками, как {'jan 15', 'feb 15', ..., 'dec 15', 'jan 16'} , а ось у маркированы в каждом ряду от 1 до 24, как это:Matlab 2016a - как получить xTickLabels только на некоторых xTicks на imagesc?

Desired imagesc axes

Когда я запускаю сценарий, он отображает ось ординат, как я хочу, но это только отображает первый метку на оси x и игнорирует остальные. Я могу заставить это работать на сюжет, но я не могу заставить его работать для изображения. Я включил свой сценарий ниже. Кто-нибудь знает, как заставить imagesc отображать все 13 меток на оси x с равномерно распределенными интервалами?

mylabels = {'jan 15','feb 15','mar 15','apr 15','may 15','jun 15','jul 15','aug 15','sep 15','oct 15','nov 15','dec 15','jan 16'}; 
testspacing = (1:(60*24*30):528480); 
figure 
imagesc(rand(24,366)) 
set(gca,'XTick',testspacing,'XTickLabel',mylabels,'XTickLabelRotation',45,'YTick',1:24,'YTickLabel',1:24) 

ответ

0

Проблема с кодом является то, что ваш единственный один из ваших тиков от testspacing падает в пределах участка testspacing=[1 43201 ...]. Вы можете проверить диапазон своей оси x, запустив xlim без каких-либо аргументов.

Вы можете перемасштабировать тест-пространство, чтобы оно соответствовало вашей оси x, например. например:

xmax = 366; 
mylabels = {'jan 15','feb 15','mar 15','apr 15','may 15','jun 15','jul 15','aug 15','sep 15','oct 15','nov 15','dec 15','jan 16'}; 
testspacing = (1:(60*24*30):528480); 
testspacing = testspacing/max(testspacing)*xmax; 
figure 
imagesc(rand(24,xmax)) 
set(gca,'XTick',testspacing,'XTickLabel',mylabels,'XTickLabelRotation',45,'YTick',1:24,'YTickLabel',1:24) 

или вы просто генерируете тесты правильно. Так как вы помещаете собственные метки на оси, вы можете просто выбрать testspacing = [0:30.5:366] или testspacing = [0:30:366] в зависимости от того, что вы хотите. Это также поможет вам позже отладить ваш собственный код.

В другой заметке вы должны подумать о сокращении количества меток в целом и решить, какая из этикеток действительно полезна. Может быть, каждый второй или третий месяц достаточно. Вы можете «удалить» отдельные ярлыки, установив их в пустые строки ''.

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