Generating color map for a 3d grid
28 views (last 30 days)
Show older comments
I apologize if this question had been asked before, I couldn't find the solution I needed.
I have a 3d grid which I plot using Scatter3 function. Each point in the grid has a value, which I want to translate to a color, any ideas how I do that?
A simple example:
X = 1:10;
Y = 1:10;
Z = 1:10;
Values = rand(10,10,10);
Each point has a correlated value in the Values Mat.
I want to do scatter3(X,Y,Z) But also making each dot to have a color like in normal Jet where the Jet color map is between min(values) to max(values).
P.S. In my real application I have much more dots then the simple line I created for demonstration
I appreciate the help.
0 Comments
Accepted Answer
Voss
on 8 May 2022
X = 1:10;
Y = 1:10;
Z = 1:10;
Values = rand(10,10,10);
% 16-color jet colormap
cmap = jet(16);
NC = size(cmap,1);
% set up thresholds for determining which Values get which color
min_value = min(Values(:));
max_value = max(Values(:));
thresholds = linspace(min_value,max_value,NC+1);
thresholds(end) = Inf; % set the uppermost threshold to Inf to avoid missing Values at max_value
% color_idx is indices into cmap
color_idx = zeros(size(Values));
for ii = 1:NC
% Values between two adjacent thresholds ii and ii+1 will get color cmap(ii,:)
color_idx(Values >= thresholds(ii) & Values < thresholds(ii+1)) = ii;
end
% grid for scatter plot
[XX,YY,ZZ] = ndgrid(X,Y,Z);
% scatter plot with marker '.' size 20 and colors cmap(color_idx,:)
scatter3(XX(:),YY(:),ZZ(:),20,cmap(color_idx,:),'.')
% set up and display colorbar for reference
set(gca(),'Colormap',cmap,'CLim',[min_value max_value])
colorbar
4 Comments
More Answers (0)
See Also
Categories
Find more on Colormaps 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!