如何使用依赖于值的颜色在Matlab中制作2D散点图?

时间:2014-11-05 10:18:01

标签: matlab plot

我有三个相同长度的向量:xycls。我想制作一个x和y的二维图,但每个点应该有一个与cls的值相对应的颜色。

我想过使用scatter函数,但你可以改变整个情节的颜色,而不是特定元素的颜色。有什么想法吗?

我希望得到类似于此示例的内容,当cls包含三个值的元素时:

enter image description here

4 个答案:

答案 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);