我有一个R图,我希望用户能够单击图形上的一个点,我想知道他们单击的位置。有点像鼠标监听器。我正在使用RStudio。这有可能吗?基本上,对于他们单击的某个点,我想显示另一个有关该点的更多细节的图。
这是我所拥有的:
data <- data.frame(x=c(1,2,3,4,5),y=c(1,2,3,4,5))
x11()
plot(data)
loc <- locator(n=1)
if(loc$x > 2) {
x11()
plot(c(1,2,3),c(5,6,7))
}
loc <- locator(n=1)
if(loc$x > 2) {
x11()
plot(c(4,5,6),c(5,6,7))
}
因此,出现了具有5个数据点的第一个图。如果用户单击x值超过2,则我想打开另一个图,该图将绘制您看到列出的数据点(3个数据点)。然后,如果他们关闭该绘图并在原始的5个数据点绘图上单击2 AGAIN,那么我希望它使用您在第二个if语句中看到的3个数据点打开一个新绘图。
但这给了我错误和I / O问题。
最佳答案
(我意识到这不是一个完整的答案,但是它的格式不能很好地作为注释。)要使特定设备成为 Activity 设备,您需要确定其编号。执行代码后,我可以获取设备列表并将第一台X11设备设置为最新设备
dev.list()
#quartz X11 quartz X11 X11
# 2 3 4 5 6
dev.set(3)
#X11
# 3
所以试试这个:
x11() ; first.ID <- dev.cur()
plot(data)
loc <- locator(n=1)
if(loc$x > 2) {
x11() ; second.ID <- dev.cur()
plot(c(1,2,3),c(5,6,7))
}
dev.set(first.ID)
loc <- locator(n=1)
if(loc$x > 2) {
x11() ; third.ID <- dev.cur()
plot(c(4,5,6),c(5,6,7))
}
在我的计算机上,您还需要单击第一个图形窗口的标题以将其公开,因为Mac Gui不会将 Activity 设备置于前台。
关于r - 互动R图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7864273/