Assign custom interval to the color map z axis of a surf plot
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
OLUWAFEMI AKINMOLAYAN
am 15 Jul. 2022
Kommentiert: Mathieu NOE
am 12 Sep. 2022
My surf (z) plot ranges from 0 to 255. i used turbo color map but the ranges per color were quite even across the value. i would like to able to set uneven custom interval for the colormap of my surf plot. I have checked through resources online, but could not figure it out for my case. Thanks in advance.
5 Kommentare
Akzeptierte Antwort
Mathieu NOE
am 15 Jul. 2022
hello
try my little demo
the colorbar is "frozen" so that ticks / tickslabels do not vary acccording to data range. In other words , you can display data which max value can be either below or above the max value of the thresholds without graphical impact.
see the 2 examples shown below
hope it helps
Z = 5*abs(Z); % modify here the magnification factor to see effects on plot
Z = 50*abs(Z); % modify here the magnification factor to see effects on plot
[X,Y,Z] = peaks(50);
Z = 50*abs(Z); % modify here the magnification factor to see effects on plot
[maxval, ~] = max(Z(:));
[minval, ~] = min(Z(:));
maxval = ceil(maxval);
minval = floor(minval);
thresholds = [0 20 100 155 231 240 250 255]; % absolute thresholds for data ( 0-20, 20-100, 100-155, 155-231, 231- 240, 240-250, 250-255)
n_thr = numel(thresholds);
mycolormap = jet(n_thr); % NB : Z data can be higher than max value of thresholds
colormap(mycolormap);
% create scaled color values C
C = zeros(size(Z));
for ck=1:n_thr-1
C(Z >= thresholds(ck) & Z < thresholds(ck+1)) = ck; %
end
C(Z >thresholds(end)) = ck+1; % do not forget data higher than max (last) value of thresholds
% plot
figure(1)
surf(X,Y,Z, C);
caxis([1 n_thr]); % freeze C axis (color) range
axis([-3 3 -3 3 0 maxval]);
cb_yticklabels = arrayfun(@num2str,thresholds,'uni',false);
cbh = colorbar;
set(cbh,'ytick',1+(n_thr-1)*(0:n_thr-1)/n_thr);
set(cbh,'yticklabel',cb_yticklabels);
4 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Orange finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!