3

我有一组数据,看起来像:

    x   y   z
1   1   2   1
2   3   5   7
3   -3  2   4
4   -2  1   1

所以每一行都记录了 3-D 空间中的点坐标。我想将所有点绘制为点,除了一个点,比如第 15 号作为半透明球体,我可以设置半径。然后我可以从图中看到数据中的哪些点包含在球体中。我现在正在使用 RGL 包并执行了以下操作:

> open3d()
> plot3d(readin,col=3,type="p")
> plot3d(readin[15,],col=2,add=T,type="s",radius=0.1)

所以第一个绘图命令将整个集合绘制为散点图,第二个绘图命令选择数据的第 15 行并将其绘制为球体并将其添加到前一个画布中。我只是想知道我是否可以使球体半透明,以便我可以看到球体中包含哪些点,这意味着这些点非常接近我选择的点。

RGL 有没有办法做到这一点,或者你可以为我提供另一种方法来完成这项任务?

谢谢!

4

3 回答 3

8

我认为您正在寻找的是论点alpha

例子

df <- data.frame(x=c(1,3,-3,-2), y=c(2,5,2,1),z=c(1,7,4,1))

library(rgl)
open3d()
plot3d(df,col=3,type="p", radius=0.5)
plot3d(df,col=rgb(1,0,0.3),alpha=0.5, add=T,type="s",radius=1)

在此处输入图像描述

于 2013-04-22T20:51:09.483 回答
1

您可以使用 spheres3d 的 alpha 参数绘制透明球体。您可以旋转绘图以将框线移动到球体后面以证明它是透明的。

 spheres3d(dat[4,],col=rgb(1,0,0), alpha=0.9)  # transparent red.

(我试图用 alpha 参数来做到这一点,rgb但它失败了。)

于 2013-04-22T20:51:05.500 回答
0

如果您只想找出哪些点在点 15 的某个半径内,那么您可以计算从每个点到点 15 的欧几里得距离,并查看其中哪些距离小于半径。不需要绘图(尽管您可以将这些点绘制为不同的颜色以突出显示它们。该dist函数是计算距离的一种方法,或者自己编程很简单。

于 2013-04-22T20:54:08.287 回答