Spectral lightness rainbow
Quick post to share my replica of Ethan Montag ‘s Spectral lightness colormap from this paper. My version has a linear Lightness profile (Figure 1) that increases monotonically from 0 (black) to 100 (white) while Hue cycles from 180 to 360 degrees and then wraps around and continues from 0 to 270.
You can download the colormap files (comma separated in MS Word .doc format) with RGB values in 0-1 range and 0-255 range.
Figure 1
Figure 2
Matlab code
To run this code you will need Colorspace, a free function from Matlab File Exchange, for the color space transformations.
%% generate Chroma, Lightness, Hue components h2=linspace(0,270,60*2.56); h1=linspace(180,360,103); h=horzcat(h1,h2); c=ones(1,256)*25; l=linspace(0,100,256);
%% merge together lch = vertcat(l,c,h)';
%% convert to RGB rgb = colorspace('LCH->rgb',lch);
%% Plot color-coded lightness profile figure; h=colormapline(1:1:256,lch(:,1),[],rgb); set(h,'linewidth',2.8); title('Montag Spectral L* lightness plot ','Color','k','FontSize',12,'FontWeight','demi');
%% Pyramid test data PY=zeros(241,241); for i = 1:241 temp=(0:1:i-1); PY(i,1:i)=temp(:); end test=PY.'; test=test-1; test(test==-1)=0; test1=test([2:1:end,1],:); PY1=PY+test1; PY2=fliplr(PY1); PY3= flipud(PY1); PY4=fliplr(PY3); GIZA=[PY1,PY2;PY3,PY4].*2; x=linspace(1,756,size(GIZA,1)); y=x; [X,Y]=meshgrid(x,y); clear i test test1 PY PY1 PY2 PY3 PY4 temp; %% display Pyramid surface fig1=figure; surf(X,Y,GIZA,GIZA,'FaceColor','interp','EdgeColor','none'); view(-35,70); colormap(rgb); axis off; grid off; colorbar; % set(fig1,'Position',[720 400 950 708]); % set(fig1,'OuterPosition',[716 396 958 790]); title('Montag Spectral L*','Color','k','FontSize',12,'FontWeight','demi');
Aknowledgements
The coloured lightness profiles were made using the Colormapline submission from the Matlab File Exchange.