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 ...