![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/175580/image.jpeg)
Discrete color scale in 3D plot
6 次查看(过去 30 天)
显示 更早的评论
The following code produces a strip in the middle of a flat base. How can I adjust the color bar so that I can use only one color to represent the data range [0 2), one color for (2 4], one color for (4 6], and so on? So the color on the strip will be discrete on each level, rather than a continuous transition.
img = zeros(101,101);
img(51,51) = 10;
% let's try discrete color scale
surf(img)
shading interp
colorbar
axis tight
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/148288/image.png)
0 个评论
采纳的回答
Image Analyst
2015-3-25
Try this:
clc;
close all;
img = zeros(101,101);
img(51,51) = 10;
% let's try discrete color scale
surf(img)
shading interp
axis tight
myCustomColorMap = zeros(256, 3);
% Map 0-2, which is the first 20% or 51 elements:
row1 = 2;
row2 = row1 + 50;
myCustomColorMap(row1:row2,:) = repmat([1,0,0], [row2-row1+1, 1]); % Red
% Map 2-4, which is the next 20% or 51 elements:
row1 = row2+1;
row2 = row1 + 50;
myCustomColorMap(row1:row2,:) = repmat([0,1,0], [row2-row1+1, 1]); % Green
% Map 4-6, which is the first 20% or 51 elements:
row1 = row2+1;
row2 = row1 + 50;
myCustomColorMap(row1:row2,:) = repmat([0,0, 1], [row2-row1+1, 1]); % Blue
% Map 6-8, which is the first 20% or 51 elements:
row1 = row2+1;
row2 = row1 + 50;
myCustomColorMap(row1:row2,:) = repmat([1,1,0], [row2-row1+1, 1]); % Yellow
% Map 8-10, which is the first 20% or 51 elements:
row1 = row2+1;
row2 = size(myCustomColorMap, 1);
myCustomColorMap(row1:row2,:) = repmat([1,0,1], [row2-row1+1, 1]); % Magenta
colormap(myCustomColorMap);
colorbar
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/175580/image.jpeg)
5 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Blue 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!