散点图:为不同的数据集使用不同的颜色

时间:2016-02-12 02:41:08

标签: arrays matlab plot 3d scatter-plot

我有3个Nx1阵列,比如X,Y,Z。我想创建一个3D图,这样我可以为每个阵列分配不同的颜色,以提高点的可见性。我现在的主要目标是仅改变数组Z的颜色,使得数组X和Y的元素具有与Z元素不同的颜色。

我尝试了scatter3函数和gscatter MATLAB函数,但无法达到我想要的效果。

desired 3D plot

如果我们在图像(Z轴)中看到垂直轴,则点的颜色从蓝色变为橙色/黄色。我想将所有这些Z点的颜色设置为红色。休息时,X和Y点的所有颜色保持不变

2 个答案:

答案 0 :(得分:0)

scatter(x, y, a, c)获取参数xy,然后a获取大小,c获取颜色。 a可以是单个标量,也可以是每个(x,y)点大小的向量。 c可以是RGB triplet或矢量,其大小与xy相同。例如:

x = 1:4;
scatter(x, x, 10*x, x);

结果

Example

scatter3(x,y,z,s,c)类似,所以在你的情况下,也许是

scatter3(X,Y,Z,[],Z)

将导致您的数据具有由其z值确定的不同颜色。

我认为的一个小例子是你正在寻找的东西:

X = rand(100,1);
Y = rand(100,1);
Z = rand(100,1);

scatter3(X,Y,Z,[],Z)

产地:

enter image description here

答案 1 :(得分:0)

我通过尝试不同的MATLAB函数得到了答案。

我使用了gscatter功能。因为我必须将所有Z点(将'Z'数组作为第3个数据集)视为红色并将X和Y数据集(其他2个数据集)作为绿色或其他颜色,我使用以下代码:< / p>

group = Z(:,1); 
gscatter(X(:,1),Y(:,1),group, 'gr', 'xo'); 

它会创建一个2D图,但符合我的目的。

图像由3个数据集组成,但前2个数据集有意组合(在绿色十字架中),第3个数据集保持红色,以显示第3个数据集与第1个和第2个数据组合的关系。

Click here for Image.