![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/175580/image.jpeg)
Discrete color scale in 3D plot
조회 수: 3 (최근 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!