繁体   English   中英

如何将2d点添加到3d散点图

[英]How to add 2d points to a 3d scatterplot

我有一个3d散点图,想将2d点显示在3个平面(x,y),(x,z)和(y,z)上,好像它们是投影到这些平面上的3d数据的阴影一样。 左图是一个示例:

http://www.doka.ch/Excel3Dscatterplot.htm

可以在R或Matlab中实现吗? 我已经搜索了可以做到这一点的代码,但是没有成功。

是的,对于任何3D点

P = [x y z]

您可以通过创建3个新点来创建3个阴影

p1 = [0 y z]
p2 = [x 0 z]
p3 = [x y 0]

因此,在MATLAB中,如果您有点云,

P_cloud = [...
    x1 y1 z1
    x2 y2 z2
    x3 y3 z3
    ...
];

只是情节

P_cloud_YZ = [...
    0 y1 z1
    0 y2 z2
    0 y3 z3
    ...
]; 

P_cloud_XZ = [...
    x1 0 z1
    x2 0 z2
    x3 0 z3
    ...
];  


P_cloud_XY = [...
    x1 y1 0
    x2 y2 0
    x3 y3 0
    ...
];  

或者,当然,重复使用相同的数据

[P_cloud(:, [2 3]) zeros(size(P,1),1)]
[P_cloud(:, [1 3]) zeros(size(P,1),1)]
[P_cloud(:, [1 2]) zeros(size(P,1),1)]

做完这样的事情之后:

figure
[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
scatter3(x,y,z)

您可以使用相同的图形并在其中添加一些其他图形:

hold on;
plot3(x,y,min(z)*ones(size(x)),'r+');
plot3(min(x)*ones(size(x)),y,z,'g+');
plot3(x,min(y)*ones(size(x)),z,'k+');

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM