MATLAB Answers

How to standardize the colormap of every figure created from different set of data

6 views (last 30 days)
NUR AMIRA ZULKIFLLI
NUR AMIRA ZULKIFLLI on 26 May 2020
Edited: Robert U on 26 May 2020
i want to generate figures with the same color at the background (as you can see the current figures i have generated have different color intensitiy because of different range of data used). My current simple basic codes are below:
h = figure();
surf(SMImage{SMImageNumber},'edgecolor','none');
colormap(jet(256));
colorbar;
So, how can i standard the colormap so that every figures generated will have the same color background (preferably in blue, because thats what i commonly noticed in previous work) ?

Answers (1)

Robert U
Robert U on 26 May 2020
Edited: Robert U on 26 May 2020
Hi NUR AMIRA ZULKIFLLI,
you can supply own colormaps to several plots. You might want to look into imagesc() since it provides limits as well.
[X,Y,Z] = peaks(100);
dLim = [-4, 4];
newFh = figure;
ah = axes(newFh);
imagesc(ah,X(1,1:end),Y(1,1:end),Z,dLim);
cbh = colorbar(ah);
colormap(ah,cmStd([0,0,1],[1,1,1],[1,0,0],256,false))
cmStd:
function cmap = cmStd(firstColor,midColor,endColor,n,binv)
% cmStd - returns a colormap array
%
% generates an Nx3 array of the RGB values of a colormap that ranges
% from first color at the low end, midColor in the middle, and endColor at the high
% end. The colormap can be inverted.
%
% USAGE
% cmap = cmStd([0,0,1],[1,1,1],[1,0,0],256,false) % blue to red over white
%
% INPUTS
% firstColor - rgb triplet, color of lowest value
% midColor - rgb triplet, color of lowest value
% endColor - rgb triplet, color of lowest value
% n - (optional) the number of bins in the colormap.
% Default is 64.
% binv - (optional) logical, invert colors
% Default is false.
%
% OUTPUTS
% cmap - the Nx3 colormap that can be used with the 'colormap' command
if nargin <=3
n = 64;
binv = false;
elseif nargin == 4
binv = false;
elseif nargin > 5
error('Too many inputs. Expected up to four, got %d',nargin)
end
validateattributes(firstColor,{'double'},{'size',[1 3],'<=',1,'>=',0});
validateattributes(midColor,{'double'},{'size',[1 3],'<=',1,'>=',0});
validateattributes(endColor,{'double'},{'size',[1 3],'<=',1,'>=',0});
validateattributes(n,{'double'},{'integer','scalar','>=',3});
validateattributes(binv,{'logical'},{'nonempty','scalar'});
% set the x, y, and z valules and interpolate
x = [1,n/2,n];
y = 1:3;
xnew = 1:n;
ynew = 1:3;
[x,y] = meshgrid(x,y);
[xnew,ynew] = meshgrid(xnew,ynew);
z(:,1) = firstColor';
z(:,2) = midColor';
z(:,3) = endColor';
cmap = interp2(x,y,z,xnew,ynew)';
if binv
cmap = flip(cmap,1);
end
end
Kind regards,
Robert

  0 Comments

Sign in to comment.

Tags