4

我希望能够splom在 R 中生成一个基本图,然后使用鼠标单击其中一个子面板(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
4

2 回答 2

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

可以想象这样的场景:

  1. 然后,您可以使用重定向控制台 sink

    con <- file("pointsselected.log")
    sink(con, append=TRUE)
    
  2. 选择图中的一些点。

  3. 选择一个不在面板上的点(绘图外部)

  4. 恢复控制台

    sink() 
    
  5. 读取所有选定的点

       cat(readLines("pointsselected.log"), sep="\n")
    

但是从帮助来看,交互选项仍然是实验性的,未来可能会改变确切的细节。

于 2012-12-11T16:28:12.023 回答
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(.)[.]即使在单击后仍保持打开状态。有什么想法吗?

于 2012-12-12T15:04:12.413 回答