Установите цвет определенных значений с помощью палитры

поэтому небольшая версия того, что я пытаюсь сделать, у меня есть матрица A;

A = [0 1 0; 2 0 0;1 3 6;9 0 1];
imagesc(A)

Поэтому, когда я использую imagesc(A), я получаю красивую сетку, в которой каждое значение представлено своим цветом. Однако я хочу иметь возможность установить значение 0 специально для белого и в идеале иметь возможность изменять другие цвета по своему усмотрению, например, если я знаю, что два значения представляют одно и то же, например 3 и 6, тогда они могут быть установлены на одинаковые или относительно похожие цвета. Является ли imagesc неправильной командой для использования, потому что, насколько я могу судить, она использует цветовой градиент.

Спасибо


person nsoures    schedule 30.09.2015    source источник


Ответы (2)


2 варианта:

  1. вы можете создать свою собственную палитру, как показано в Как создать пользовательскую цветовую карту программно?
  2. или просто сопоставьте свою матрицу A с матрицей, которая будет окрашена по вашему желанию. Итак, если вы знаете, что хотите, чтобы 3 и 6 имели один и тот же цвет, создайте функцию сопоставления, которая сделает это так. Затем вы используете A для индексации карты, поэтому 3-й и 6-й элементы карты должны быть одинаковыми, например.

    map = [1, 2, 3, 4, 5, 6, 4, 7, 8, 9, 10];
    imagesc(map(A+1))
    

    обратите внимание, что элементы 4 и 7 в map одинаковы, потому что ваши значения A начинаются с 0, поэтому во второй строке есть +1.

    а затем просто выберите цветовую карту, которая начинается с белого.

Лично я бы пошел по методу 1.

person Dan    schedule 30.09.2015
comment
Спасибо, извините, я не знаю, как я не нашел тот первый, я новичок на этом сайте и в программировании в целом, в любом случае проблемы решены, так что еще раз спасибо. - person nsoures; 02.10.2015

Простое решение:

% get colormap and set first value to white
cmap = colormap;    
cmap(1,:) = [1 1 1];

% apply new colormap
colormap(cmap);

% display matrix 
imagesc(A);

Очевидно, вы можете изменить цвета для других значений таким же образом.

person gregswiss    schedule 30.09.2015