Заостренная цветная полоса в Matlab?

Я пытаюсь создать фигуру в Matlab, пригодную для публикации, и мне нужна помощь с цветовой полосой.

Мои данные находятся в диапазоне от -20 до 30, но я хочу, чтобы цветовая полоса фокусировалась на значениях от -15 до 15 со стрелками на каждом конце для представления значений за пределами этого диапазона.

Я попытался использовать класс pointyColorbar (http://www.mathworks.co.uk/matlabcentral/answers/48773), но он не дает требуемого результата. В идеале я хотел бы, чтобы цветовая полоса выглядела так, как показано ниже, но с использованием моей пользовательской карты цветов.

Может ли кто-нибудь помочь мне с этим? Извините, если я не правильно задал вопрос - я новичок в этом!

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

В соответствии с запросом ниже показано, что у меня сейчас есть для моей панели цветов (cmap — это моя пользовательская карта цветов):

cmap=precipanomcolourmap(7,7)
colormap(cmap)
caxis([-20 30])
cb=colorbar('location','southoutside');
set(get(cb,'title'),'string','Average annual precipitation anomaly (%)','FontWeight','bold');
set(cb,'XTick',[-17.5 -15 -12.5 -10 -7.5 -5 -2.5 0 2.5 5 7.5 10 12.5 15 17.5]);
xlim(cb,[-17.5 17.5]);

Это дает мне прямоугольную цветовую полосу под моей цифрой в диапазоне от -17,5 до 17,5. Значения вне этого диапазона отмечены тем же цветом, что и диапазон +/- 15-17,5.

Когда я попробовал класс pointyColorbar, я заменил строку cb=colorbar('location','southoutside'); на cb=pointyColorbar(15,-15,'location','southoutside'). Вполне может быть, что мне нужно поиграться с тем, как использовать класс pointyColorbar, но я недостаточно хорошо понимаю код, чтобы знать, как заставить его выглядеть так, как я хочу.


person emmalgale    schedule 07.02.2014    source источник
comment
Не могли бы вы показать нам, что вы уже сделали в MATLAB?   -  person m_power    schedule 07.02.2014
comment
Я добавил код выше :)   -  person emmalgale    schedule 10.02.2014
comment
Какую версию MATLAB вы используете? Я видел, что функции isrow и iscolumn в pointyColorbar доступны только из MATLAB R2011a. Кроме того, функция poly2mask доступна в наборе инструментов для обработки изображений, поэтому класс не будет работать, если у вас нет этого набора инструментов.   -  person m_power    schedule 10.02.2014
comment
Я использую MATLAB R2013a, а также у меня есть Image Processing Toolbox. Моя лицензия на MATLAB получена через мой университет, поэтому у меня достаточно много наборов инструментов. Когда я использовал класс pointyColorbar, у него в основном была цветовая полоса в прямоугольном блоке с несколькими стрелками внутри, но это выглядело неправильно. Хотя не уверен, что смогу выложить его изображение.   -  person emmalgale    schedule 10.02.2014
comment
Кажется, класс работает для загрузки изображений, я не знаю, будет ли он работать с функцией contour.   -  person m_power    schedule 10.02.2014
comment
На самом деле я использую функцию pcolor. Изображение выше было просто примером того, как я хочу, чтобы цветная полоса выглядела. Когда у меня появится шанс, я собираюсь еще раз поиграть с классом pointyColorbar, чтобы посмотреть, смогу ли я заставить его работать. Есть ли другой способ получить цветовую полосу, подобную приведенной выше?   -  person emmalgale    schedule 12.02.2014


Ответы (1)


Что касается проблемы с указанием, я думаю, что ваш ответ находится внизу этой страницы:

http://www.mathworks.com/matlabcentral/answers/48773

и о пределах цветовой полосы, я думаю, вы ищете что-то вроде:

set(gca, 'CLim', [cLow, cHigh]);

перед отображением цветовой полосы.

(«cLow» и «cHigh» — это пределы, которые вы хотите использовать для цветовой полосы).

Взгляните на это: http://www.mathworks.com/matlabcentral/newsreader/view_thread/163344

person Rorro    schedule 25.02.2014
comment
Код, который я написал, не должен создавать этот пример. Я просто хочу, чтобы цветовая полоса выглядела так - остальная часть рисунка не имеет значения (расположение цветовой полосы уже отсортировано). Ограничения работали нормально, это был буквально просто заостренный бит, который я пытался сделать. - person emmalgale; 26.02.2014
comment
Хорошо, извините, я не могу помочь вам с этим. Я напишу тебе, если узнаю. - person Rorro; 26.02.2014
comment
Я отредактировал свой ответ. Я верю, что знаю, что у тебя есть то, что ты хочешь. - person Rorro; 26.02.2014
comment
Если вы перечитаете мой первоначальный вопрос, вы увидите, что я уже пытался использовать pointyColorbar, но не смог заставить его работать так, как хотел. - person emmalgale; 28.02.2014