matlab plot color-mapping

Matlab mapa de color personalizado con solo 3 colores



plot color-mapping (4)

Toma este ejemplo:

% some matrix with integer values in the range [0,100] Z = peaks; Z(:) = round((Z(:)-min(Z(:))) ./ range(Z(:))*100); % show as image (with scaled color mapping) image(Z, ''CDataMapping'',''scaled'') caxis([0 100]) % set axes CLim property colormap(eye(3)) % set figure Colormap property colorbar % show colorbar

Tenga en cuenta que los colores se escalan al rango [0 100], ese rango se asigna al mapa de colores de la figura actual (que establecemos en solo tres colores).

Solo quiero comprobar si es posible hacer un mapa de color personalizado con solo 3 colores. (no hay necesidad de gradiente).

Ejemplo: los rangos de datos de 0-100 ,

  • entonces 0-33 es un color,
  • 34-67 es otro color,
  • y 68-100 es otro color.

Solo usa un mapa de colores con tres filas. Cada fila define un color en términos de componentes R, G, B.

A = randi(100,16,16); %// example data imagesc(A) %// display matrix as image colormap([1 0 0; 0 1 0; 0 0 1]) %// apply colormap colorbar %// show color bar

Esto define umbrales uniformemente espaciados entre colores. Si necesita más control, necesita tener más de tres filas, con algunos de los colores repetidos. Por ejemplo,

colormap([1 0 0; 1 0 0; 0 1 0; 0 0 1]) %// apply colormap

definirá un umbral del 50% para el primer color, el 75% para el segundo y el 100% para el tercero.


Mira mi respuesta aquí

Puede usar ese código y decidir interpolar entre valores o no, son solo 2 líneas del código.

La imagen resultante se muestra en la publicación original para un mapa de colores GYR cutom.


Sigue este ejemplo: ¿Cómo crear un mapa de color personalizado mediante programación? pero en lugar de R = linspace(0,t(1),50)'' usaría R = ones(50,1)*t(1)

o incluso más simple:

si el color 1 es t1 = [r1, g1, b1] etc.

map(1:34, :) = repmat(t1, 33, 1) map(35:68, :) = repmat(t2, (67-34), 1)

etc ...

O

map(1:34, :) = bsxfun(@times, t, ones(33,3)) etc ...