Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在RGL plot3d中使用鼠标拾取图元?_R_Rgl - Fatal编程技术网

如何在RGL plot3d中使用鼠标拾取图元?

如何在RGL plot3d中使用鼠标拾取图元?,r,rgl,R,Rgl,我计算多元数据集的主成分,并使用rgl::plot3d将前3个主成分的分数显示为三维交互式绘图上的球体。不幸的是,3D绘图上的哪个球体与我的数据集中的哪个观测值相对应并不总是很清楚是否有一些简单的方法来添加鼠标回调,以返回单击球体的索引? # For example, I plot iris library(rgl) with(iris, plot3d(Sepal.Length, Sepal.Width, Petal.Length, type="s"

我计算多元数据集的主成分,并使用
rgl::plot3d
将前3个主成分的分数显示为三维交互式绘图上的球体。不幸的是,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?

我已经检查过了,但它没有提到这样的功能。我还发现,通过
translationMatrix
rgl.setMouseCallbacks
的巧妙组合,可以获得鼠标指针在绘图坐标中的位置,然后潜在地链接到最近的元素,但这似乎非常复杂。

好吧,在这个问题中,我发现了一个than函数,它提到了函数
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
库(rgl)
附加(虹膜)
plot3d(萼片长度、萼片宽度、花瓣长度、,
type=“s”,col=as.numeric(种类))

你可以详细地看一看pts:谢谢,这是一个很好的观点。plotly的功能看起来确实令人印象深刻,我将尝试一下。plot.ly 3d在rgl的灵活性附近没有任何位置。不幸的是。它甚至没有办法做线段。