Generating color map for a 3d grid
36 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Voss
2022-5-8
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
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Colormaps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!