добавить цветную полосу с помощью yticklabes matlab

У меня Матлаб R2013b.

Я хотел бы запустить цветную полосу на моем графике, но вместо 4 меток, как указано

figure
plot(1:100,rand(100))
hcb = colorbar('YTickLabel',{'Sleeping','Very light','Light','Moderate to vigorous'});

Я получаю 6 ярлыков: {'Sleeping','Very light','Light','Moderate to vigorous','Sleeping','Very light'}


person gabboshow    schedule 04.12.2014    source источник


Ответы (2)


colorbar по умолчанию использует палитру из 64 цветов. Это заставляет Matlab по умолчанию размещать 6 тиков на цветовой полосе, а именно 10, 20, ... 60.

Когда вы устанавливаете свойство 'Yticklabel', если вы передаете меньше строк, чем количество yticks, эти строки циклически повторяются. Это поведение, которое вы наблюдаете.

Решение состоит в том, чтобы уменьшить количество тиков до 4, чтобы оно соответствовало количеству строк, которые у вас есть. Вы также можете использовать 4-цветную палитру:

figure
plot(1:100,rand(100))
colormap(hsv(4)) %// example colormap with 4 colors.
hcb = colorbar;
set(hcb, 'Ytick', [1:4]+.5); %// 4 yticks, each "in the middle" of one color
set(hcb, 'YTickLabel', {'Sleeping','Very light','Light','Moderate to vigorous'});

введите здесь описание изображения

person Luis Mendo    schedule 04.12.2014
comment
Благодарю. Я добавил несколько пустых ярлыков... это не идеально, но приемлемо. - person gabboshow; 04.12.2014
comment
Для цветовой карты «jet» по умолчанию вы должны использовать: set(hcb, 'YTick', [1:4]*64/5); - person Jim Quirk; 04.12.2014
comment
Спасибо! Можно ли по-прежнему использовать все цвета палитры? - person gabboshow; 04.12.2014
comment
set(hcb, 'Ytick', 1:round(64/4):64]); более или менее это то, что я хочу - person gabboshow; 04.12.2014
comment
можно ли в вашем графике изменить размер цвета в цветовой полосе? например, красный должен быть меньше зеленого... Красный [0;1.1] Зеленый [1.1 2] Синий [2 3] и Фиолетовый [4:конец] - person gabboshow; 04.12.2014
comment
@gabboshow Это можно сделать (но тогда сложно поставить галочки). В основном вам нужно вручную определить палитру, скажем, с 2 повторяющимися строками для красного цвета; 5 для зеленого и т. д. Тогда красный размер будет 2/5 размера зеленого - person Luis Mendo; 04.12.2014

Я думаю, вам нужно также указать вектор Ticks той же длины, например. (синтаксис для R2014b может немного отличаться для R2013b):

colorbar('Ticks',[0 0.3 0.6 0.9],...
         'TickLabels',{'Sleeping','Very light','Light','Moderate to vigorous'})
person am304    schedule 04.12.2014
comment
это работает для Matlab 2014, к сожалению, не для 2013 года - person gabboshow; 04.12.2014