MATLAB imagesc: используйте черный цвет в качестве среднего цвета для значения 0

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

Например, использование colormap(hot) присваивает черному цвету наименьшее (в данном случае отрицательное) число, что выглядит плохо:

figure, imagesc(Xvalues, Yvalues, Quantity) colorbar, colormap(hot), axis equal, axis off введите здесь описание изображения

Обратите внимание, что 0 присвоен неяркий красный цвет, из-за чего трудно увидеть области с исчезающим значением.

Есть ли способ использовать (например) colormap(hot) для положительных значений и некоторую голубоватую colormap для отрицательных значений, причем оба встречаются на черном нуле?


person GDumphart    schedule 13.03.2015    source источник
comment
Проверьте это: stackoverflow.com/questions/16781255/   -  person Ander Biguri    schedule 13.03.2015
comment
@AnderBiguri Вау, как я пропустил это с моими предварительными поисками. Спасибо!   -  person GDumphart    schedule 13.03.2015


Ответы (1)


РЕДАКТИРОВАТЬ: я вижу, что ссылка на аналогичный вопрос размещена здесь в качестве комментария к вопросу. Ответ, предоставленный там, намного лучше моего.

Вы можете сделать собственную цветовую карту. Карты цветов имеют три столбца и любое количество строк. Каждый столбец представляет один цвет (красный, зеленый, синий соответственно). Например, если вам нужна цветовая карта от красного до синего, вы можете сделать ее с помощью:

mymap = [zeros(256,2),linspace(1,0,256)';linspace(0,1,256)', zeros(256,2)]

а затем использовать его с

colormap(mymap)

Я не знаю простого способа сделать черный равным нулю, хотя он должен существовать. Лучший совет, который я могу вам дать, — это рассчитать, сколько строк нужно для каждого цвета, исходя из ваших минимальных и максимальных значений.

person Poelie    schedule 13.03.2015
comment
Тоже крутой подход. Тем временем я решил свою проблему, слегка изменив скрипт lbmap, связанный с другим потоком, и ваш ответ помог мне понять, как работает этот скрипт. Спасибо. - person GDumphart; 13.03.2015