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

조회 수: 98 (최근 30일)
Sujata Dhar
Sujata Dhar 2022년 12월 14일
편집: Bora Eryilmaz 2022년 12월 14일
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.

채택된 답변

Dave B
Dave B 2022년 12월 14일
편집: Dave B 2022년 12월 14일
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

추가 답변 (1개)

Bora Eryilmaz
Bora Eryilmaz 2022년 12월 14일
편집: Bora Eryilmaz 2022년 12월 14일
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

카테고리

Help CenterFile Exchange에서 Colormaps에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by