我有3个Nx1阵列,比如X,Y,Z。我想创建一个3D图,这样我可以为每个阵列分配不同的颜色,以提高点的可见性。我现在的主要目标是仅改变数组Z的颜色,使得数组X和Y的元素具有与Z元素不同的颜色。
我尝试了scatter3
函数和gscatter
MATLAB函数,但无法达到我想要的效果。
如果我们在图像(Z轴)中看到垂直轴,则点的颜色从蓝色变为橙色/黄色。我想将所有这些Z点的颜色设置为红色。休息时,X和Y点的所有颜色保持不变
答案 0 :(得分:0)
scatter(x, y, a, c)
获取参数x
和y
,然后a
获取大小,c
获取颜色。 a
可以是单个标量,也可以是每个(x,y)
点大小的向量。 c
可以是RGB triplet或矢量,其大小与x
和y
相同。例如:
x = 1:4;
scatter(x, x, 10*x, x);
结果
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)
产地:
答案 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个数据组合的关系。