我希望能够在 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
您可以使用选项详细来获取详细信息:
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")
但是从帮助来看,交互选项仍处于实验阶段,确切的细节将来可能会发生变化。
这与我正在寻找的内容非常接近,昨天发布到 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(.)[.]
的捕获即使在单击后也能保持打开状态。有什么想法吗?