How to color the colormap with a set of hexadecimal colors?

99 visualizzazioni (ultimi 30 giorni)
I want to colormap to plot data. I want to use a set of hexadecimal code for the colors of the plot. If I run with following code, I get the plot.
map=[1 0.9 0; 1 0.75 0; 1 0.625 0; 1 0.5 0; 1 0.375 0; 1 0.25 0; 1 0.125 0; 1 0 0];
colormap(map);
But instead I want to use the following set of hexadecimal codes for the plot, for eg.
map = ('#E1F2E3','#CDE5D2','#9CCEA7','#6CBA7D','#40AD5A','#22BB3B','#06592A');
But I run into error stating that
"Error using colormap
Colormap must have 3 columns: [R,G,B]."
How should I solve this issue, please.

Risposta accettata

Dave B
Dave B il 14 Dic 2022
Modificato: Dave B il 14 Dic 2022
Starting in R2020b you can use the validatecolor function to convert hex to rgb (using the 'multiple' option to convert more than one color):
map = {'#E1F2E3','#CDE5D2','#9CCEA7','#6CBA7D','#40AD5A','#22BB3B','#06592A'};
cmap = validatecolor(map, 'multiple')
cmap = 7×3
0.8824 0.9490 0.8902 0.8039 0.8980 0.8235 0.6118 0.8078 0.6549 0.4235 0.7294 0.4902 0.2510 0.6784 0.3529 0.1333 0.7333 0.2314 0.0235 0.3490 0.1647
imagesc(peaks)
colormap(cmap)
colorbar

Più risposte (1)

Bora Eryilmaz
Bora Eryilmaz il 14 Dic 2022
Modificato: Bora Eryilmaz il 14 Dic 2022
You can use a function like this in a loop:
map = {'E1F2E3','CDE5D2','9CCEA7','6CBA7D','40AD5A','22BB3B','06592A'}
map = 1×7 cell array
{'E1F2E3'} {'CDE5D2'} {'9CCEA7'} {'6CBA7D'} {'40AD5A'} {'22BB3B'} {'06592A'}
N = numel(map);
newMap = zeros(N,3);
for i = 1:N
newMap(i,:) = hex2rgb(map{i});
end
newMap
newMap = 7×3
225 242 227 205 229 210 156 206 167 108 186 125 64 173 90 34 187 59 6 89 42
function result = hex2rgb(h)
d = hex2dec(h);
r = bitshift(bitand(d, 0xFF0000), -16);
g = bitshift(bitand(d, 0x00FF00), -8);
b = bitshift(bitand(d, 0x0000FF), 0);
result = [r, g, b];
end

Categorie

Scopri di più su Colormaps in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by