我需要为散点图的某些点指定某些颜色。我写过这样的话:
Color = zeros(size(Check,1),1);
for i = 1:size(Check,1)
if Check(i) == 0
Color(i) = [0.3010 0.7450 0.9330];
elseif Check(i) == 1
Color(i) = [0.4660 0.6740 0.1880];
elseif Check(i) == 2
Color(i) = [0.9290 0.6940 0.1250];
elseif Check(i) == 3
Color(i) = [0.8500 0.3250 0.0980];
elseif Check(i) == 4
Color(i) = [0.6350 0.0780 0.1840];
end
end
scatter(x,y,Color,'filled','s');
请注意' x',' y','颜色'和'检查'具有相同的尺寸(15000 x 1)。 '检查'中的数字是' 0',' 1',' 2',' 3'或' 4'。我只需要根据我在'检查'中的数字为我的散点图分配五种不同的颜色。矩阵。颜色应该是我在代码中使用的颜色,因为我需要这个绘图来匹配我已经拥有的另一个条形图。任何帮助将受到高度赞赏!
答案 0 :(得分:2)
MATLAB中的散点图具有CData
属性,可用于为绘图指定颜色。这可以是nx3
矩阵,就像您在Color
变量中一样。但是,CData
属性也可以是向量,您可以使用colormap()
函数!
像adjpayot一样开始:
Color = [0.3010 0.7450 0.9330;
0.4660 0.6740 0.1880;
0.9290 0.6940 0.1250;
0.8500 0.3250 0.0980;
0.6350 0.0780 0.1840];
% Assume you have a figure open already
scatter(x,y,'filled', 'CData', Check);
colormap(Color);
colorHandle = colorbar();
答案 1 :(得分:1)
您需要Color
成为Color = zeros(size(Check,1),3);
这是因为颜色是RGB值,因此每个颜色通道需要一个数字。
这意味着你的代码的其余部分必须是:
Color = zeros(size(Check,1),3);
for i = 1:size(Check,1)
if Check(i) == 0
Color(i,) = [0.3010 0.7450 0.9330];
elseif Check(i) == 1
Color(i,:) = [0.4660 0.6740 0.1880];
elseif Check(i) == 2
Color(i,:) = [0.9290 0.6940 0.1250];
elseif Check(i) == 3
Color(i,:) = [0.8500 0.3250 0.0980];
elseif Check(i) == 4
Color(i,:) = [0.6350 0.0780 0.1840];
end
end
scatter(x,y,Color,'filled','s');
如果你想要,你也可以通过以下方式摆脱循环:
Color=[0.3010 0.7450 0.9330;
0.4660 0.6740 0.1880;
0.9290 0.6940 0.1250;
0.8500 0.3250 0.0980;
0.6350 0.0780 0.1840]
scatter(x,y,Color(Check+1,:),'filled','s');
在该代码中,我使用Check
索引Color
中指定的颜色列表。添加另一个案例就像为阵列添加额外的颜色一样简单。