Как назначить определенные значения для цветов в imagesc - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь присвоить три возможных значения матрицы трем цветам при построении графика с использованием imagesc в MATLAB.

Все, что я хочу, это imagesc(), чтобы представить 0 как белый, 1 как черный и 2 как красный.

Первоначально imagesc() делает это, но по мере прохождения цикла for цвета для 1 и 2 меняются местами.

Я попытался изменить порядок цветов, назначенных для colormap(), но цвета по-прежнему меняются местами.

Вот мой код:

Grid = 10;
M = zeros(Grid);
M(3,1:3)=1;M(2,3)=1;M(1,2)=1;
Black = [0 0 0];
White = [1 1 1];
Red = [1 0 0];
Background = White;
colormap([Background; Red; Black])
figure()
imagesc(M)

... пока все хорошо.У меня есть пять черных квадратов в углу.

Однако, когда мой цикл продолжается и вводятся 2, матрица выглядит следующим образом:

0   0   0   0   0   0   0
0   2   1   0   0   0   0
1   0   1   0   0   0   0
0   1   1   0   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0

, но теперь изображение показывает ЧЕРНЫЙ для 2 и КРАСНЫЙ для 1.

Как мне сохранить отношения цвет-значение?

1 Ответ

2 голосов
/ 28 апреля 2019

Ваша главная ошибка - изменение красного и черного цветов в вашей цветовой карте. Вы, вероятно, сделали это, потому что расположение цветов в правильном порядке сделало пиксели красными в вашей первой матрице - что было нежелательным. Причиной этого является то, как значения пикселей отображаются на цвета цветовой карты, что можно увидеть, показывая colorbar. Ваша пользовательская цветовая карта сработала , поскольку red использовалось для пикселей со значением около 0.5, которых не было.

Что вам нужно сделать, это правильно установить пределы цвета для ваших осей :

colormap([Background; Black; Red])
set(gca, 'CLim', [0 2]);

Затем, это то, что произойдет с исходной матрицей (обратите внимание, что на изображении нет красных пикселей, но, тем не менее, цветовая карта готова к ним):

enter image description here

...