使用R中的rgl绘制半透明球体

时间:2013-04-22 19:56:55

标签: r plot geometry transparency rgl

我有一组数据,如下所示:

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

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

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

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

有没有办法通过RGL执行此操作或者您可以为我提供另一种方法来完成此任务?

谢谢!

3 个答案:

答案 0 :(得分:7)

我认为你要找的是论证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)

enter image description here

答案 1 :(得分:1)

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

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

(我尝试用rgb的alpha参数来做,但失败了。)

答案 2 :(得分:0)

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