在 MATLAB 中为散点图的某些点分配某些颜色
Assign certain colors to certain dots of a scatter plot in MATLAB
我需要为散点图的某些点分配某些颜色。我写过这样的东西:
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'、'Color' 和 'Check' 具有相同的尺寸 (15000 x 1)。 'Check' 中的数字是“0”、“1”、“2”、“3”或“4”。我只需要根据 'Check' 矩阵中的数字为散点图分配五种不同的颜色。颜色应该是我在代码中使用的颜色,因为我需要此图与我已有的另一个条形图相匹配。任何帮助将不胜感激!
你需要 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
中指定的颜色列表。添加另一个案例就像向数组添加额外的颜色一样简单。
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();
我需要为散点图的某些点分配某些颜色。我写过这样的东西:
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'、'Color' 和 'Check' 具有相同的尺寸 (15000 x 1)。 'Check' 中的数字是“0”、“1”、“2”、“3”或“4”。我只需要根据 'Check' 矩阵中的数字为散点图分配五种不同的颜色。颜色应该是我在代码中使用的颜色,因为我需要此图与我已有的另一个条形图相匹配。任何帮助将不胜感激!
你需要 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
中指定的颜色列表。添加另一个案例就像向数组添加额外的颜色一样简单。
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();