![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/304695/image.png)
change color scheme of a scatter plot
5 次查看(过去 30 天)
显示 更早的评论
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/303508/image.png)
here above you can see i have a 2-D Scatter plot. now i want to change the color scheme.
for all the values
- values <= 10 ----- green color
- (10<values<=20) ----- yellow color (for intermediate values i.e for 13 or 16 let yellow shades become darker and similar for all 4 ranges)
- (20 < values <= 50) ----- orange color
- (50 < values ) ---- red color.
0 个评论
采纳的回答
Image Analyst
2020-5-28
Try this:
% values <= 10 ----- green color
% (10<values<=20) ----- yellow color (for intermediate values i.e for 13 or 16 let yellow shades become darker and similar for all 4 ranges)
% (20 < values <= 50) ----- orange color
% (50 < values ) ---- red color.
% First we need to create sample data because the original poster did not include it.
X = 8 : 2 : 16;
Y = 8 : 2 : 14;
[x, y] = meshgrid(X, Y);
x = x(:); % Make into 1-D vector.
y = y(:); % Make into 1-D vector.
z = randi(70, length(x), 1);
% Now we have our data and we can begin.
% We need to make up a colormap for the markers based on the value of z.
markerColors = zeros(length(x), 3);
rows = z <= 10;
markerColors(rows, :) = repmat([0, 1, 0], sum(rows), 1); % Green
rows = z > 10 & z <= 20;
markerColors(rows, :) = repmat([1, 1, 0], sum(rows), 1); % Yellow
rows = z > 20 & z <= 50;
markerColors(rows, :) = repmat([1, 0.59, 0], sum(rows), 1); % Orange
rows = z > 50;
markerColors(rows, :) = repmat([1, 0, 0], sum(rows), 1); % Red
scatter(x, y, 300, markerColors, 'filled');
grid on;
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/304695/image.png)
0 个评论
更多回答(2 个)
KSSV
2020-5-27
You should follow like this demo:
n = 100 ;
x = 1:n ;
y = rand(size(x)) ;
% divide based on values
idx1 = y >=0 & y<0.25 ;
idx2 = y >=0.25 & y<0.5 ;
idx3 = y >=0.5 & y<0.75 ;
idx4 = y >=0.75 & y < 1 ;
figure
hold on
plot(x(idx1),y(idx1),'*r')
plot(x(idx2),y(idx2),'*b')
plot(x(idx3),y(idx3),'*g')
plot(x(idx4),y(idx4),'*k')
5 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!