Customize Colormap with unequal range of colors.

9 views (last 30 days)
I want to have a colormap for values ranging from 0 to 5. I want values from 0 to 1.95 to be of 'white' color, 1.95 to 2.05 to be of 'blue' and 2.05 to 5 to be of 'yellow'. Its urgent. Thanks in advance!

Answers (1)

Karim
Karim on 24 Dec 2022
Edited: Karim on 24 Dec 2022
% first create some plot data, we use the matlab peaks as example
[X,Y,Z] = peaks(100);
% rescale the Z values so that they are between 0 and 5
Z = Z + abs(min(Z(:)));
Z = (Z./max(Z(:)))*5;
% create a 'color range', we need to sample between the min and max value of
% the plot and divide the range using the greatest common divisor of the
% desired ticks
col_range = 0:0.05:5;
% in our range look for the indexes for the colors we want
white_idx = col_range < 1.95;
blue_idx = col_range >= 1.95 & col_range < 2.05;
yellow_idx = col_range >= 2.05;
% initialize the color map i.e. as many rows as ticks and 3 columns (for
% the rgb values)
col_map = zeros(numel(col_range),3);
% set the colors using our previous indexes
col_map(white_idx,:) = repmat( [1 1 1] ,sum(white_idx),1);
col_map(blue_idx,:) = repmat( [0 0 1] ,sum(blue_idx),1);
col_map(yellow_idx,:) = repmat( [1 1 0] ,sum(yellow_idx),1);
% create the figure
figure
surf(X,Y,Z,'EdgeAlpha',0.25)
% activate the colormap
colormap(col_map)
% get the handle for the colorbar
col_handle = colorbar;
% set the ticks to the desired values
col_handle.Ticks = [0 1.95 2.05 5];

Categories

Find more on Color and Styling in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!