如何在RGL plot3d中使用鼠标选择元素?

时间:2017-04-03 09:49:27

标签: r rgl

我计算多变量数据集的主成分,并在rgl::plot3d的三维交互图上显示前三个主成分的得分作为球体。不幸的是,并不总是清楚3D图上的哪个球体对应于我的数据集中的哪个观察。 是否有一些简单的方法可以添加一个返回所点击球体索引的鼠标回调?

# For example, I plot iris
library(rgl)
with(iris, plot3d(Sepal.Length, Sepal.Width, Petal.Length, 
                      type="s", col=as.numeric(Species)))

# Now I click on some data points and want to get their indices
# how?

我已查看WebGL user interaction tutorial,但它没有提及此类功能。我还发现,使用translationMatrixrgl.setMouseCallbacks的奇特组合,可以在绘图坐标中获得鼠标指针的位置,然后可能链接到最近的元素,但它似乎是疯狂的复杂

1 个答案:

答案 0 :(得分:1)

好的,在问题Have names on the spheres built by rgl package plot3d中,我找到了answer而非提及函数rgl::identify3d。它完全符合我的要求。这是一个最小的工作示例:

library(rgl)
attach(iris)
plot3d(Sepal.Length, Sepal.Width, Petal.Length, 
       type="s", col=as.numeric(Species))
pts <- identify3d(Sepal.Length, Sepal.Width, Petal.Length,
       labels = rownames(iris))
# Use the right button to select, the middle button to quit

pts
# [1] 120 107  42  14   2 106 118
detach(iris)

iris[pts, ]  # get selected observations