我希望能够在R中生成基本splom
图,然后使用鼠标单击其中一个子面板(panel.pairs
,具体而言)并让R返回该子面板的坐标,甚至更好,该子面板中绘制的相应变量的名称。
以下是使用的示例splom
:
require(lattice)
data(iris)
super.sym <- trellis.par.get("superpose.symbol")
splom(~iris[1:4], groups = Species, data = iris,
panel = panel.superpose,
key = list(title = "Three Varieties of Iris",
columns = 3,
points = list(pch = super.sym$pch[1:3],
col = super.sym$col[1:3]),
text = list(c("Setosa", "Versicolor", "Virginica"))))
这是我到目前为止最接近的,它让我点击其中一个子面板中的一个点,并观察该点出现在其他地方的位置。实际上并不是我想要的,但它让我相信它是可能的:
trellis.focus()
panel.link.splom()
trellis.unfocus() #to close the trellis.focus session
答案 0 :(得分:1)
您可以使用选项详细信息来获取详细信息:
panel.link.splom(verbose=TRUE)
你进入控制台:
Click to choose one point to highlight
Sepal.Length Sepal.Width Petal.Length Petal.Width
141 6.7 3.1 5.6 2.4
可以想象这种情况:
然后,您可以使用sink
con <- file("pointsselected.log")
sink(con, append=TRUE)
选择图中的一些点。
选择一个不在面板上的点(图表外部)
恢复控制台
sink()
阅读所有选定的点
cat(readLines("pointsselected.log"), sep="\n")
但是从帮助中,交互式选项仍然是实验性的,具体细节可能会在未来发生变化。
答案 1 :(得分:0)
这非常接近我正在寻找的内容,昨天发布到R帮助列表:http://r.789695.n4.nabble.com/Focus-on-a-sub-panel-of-a-splom-with-trellis-focs-return-coordinate-of-sub-panel-or-names-of-variabln-td4652825.html
1)构建与上述相同的splom()
。
2)确保您已经运行library(grid)
3)现在运行以下行:
trellis.focus()
names(iris)[round(unlist(grid.locator()))]
4)点击图表的任何部分,然后结束焦点会话:
trellis.unfocus()
我说这非常接近,因为它确实符合我的要求,但我希望即使点击一下,names(.)[.]
的捕获仍然保持打开状态。有什么想法吗?