我有三个相同长度的向量:x
,y
和cls
。我想制作一个x和y的二维图,但每个点应该有一个与cls
的值相对应的颜色。
我想过使用scatter
函数,但你可以改变整个情节的颜色,而不是特定元素的颜色。有什么想法吗?
我希望得到类似于此示例的内容,当cls
包含三个值的元素时:
答案 0 :(得分:2)
在分散的帮助下:
scatter(x,y,a,c)指定圆形颜色。要绘制具有相同颜色的所有圆,请将c指定为单个颜色字符串或RGB三元组。要使用不同的颜色,请将c指定为RGB三元组的向量或三列矩阵。
你可以将c构建为
c=zeros(size(x),3);
c(cls==1,:)=[1 0 0]; % 1 is red
% ...
scatter(x,y,1,c)
但是,我不知道如何做背景。您是否应用了一些机器学习算法来对数据进行分类?也许你可以得到方程从那里绘制背景,但这取决于方法。
答案 1 :(得分:1)
如果你有统计工具箱,有一种简单的方法可以做到这一点,它被称为gscatter
。
它需要与scatter
类似的输入,但第三个输入是组:
gscatter(x,y,cls)
您可以添加颜色和标记 - 此图表带有红色,然后是绿色,然后是蓝色(由cls
的内容确定的顺序,所有标记为圆圈。
gscatter(x,y,cls,'rgb','o')
答案 2 :(得分:0)
这是另一个使用逻辑索引将数据分成三个的解决方案:
% Some random data
x = rand(100,1);
y = rand(100,1);
cls = round(2*rand(100,1));
% Split the data in three groups depending on the value in cls
x_red = x(cls==0);
y_red = y(cls==0);
x_green = x(cls==1);
y_green = y(cls==1);
x_blue = x(cls==2);
y_blue = y(cls==2);
% plot the data
scatter(x_red,y_red,1,'r')
hold on
scatter(x_green,y_green,1,'g')
scatter(x_blue,y_blue,1,'b')
hold off
答案 3 :(得分:0)
一个非常简单的解决方案,c
是颜色矢量:
scatter3(X,Y,zeros(size(X,1)),4,c);
view(0,90);