我有一组数据,如下所示:
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执行此操作或者您可以为我提供另一种方法来完成此任务?
谢谢!
答案 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)
答案 1 :(得分:1)
您可以使用spheres3d的alpha参数绘制透明球体。您可以旋转绘图以移动球体后面的框线以证明它是透明的。
spheres3d(dat[4,],col=rgb(1,0,0), alpha=0.9) # transparent red.
(我尝试用rgb
的alpha参数来做,但失败了。)
答案 2 :(得分:0)
如果您只是想知道哪个点在点15的某个半径范围内,那么您可以计算从每个点到点15的欧几里德距离,并查看哪些距离小于半径。不需要绘图(尽管你可以将这些点绘制成不同的颜色来突出显示它们。dist
函数是计算距离的一种方法,或者自己编程很简单。