通过单击识别现有splom中的子面板

时间:2012-12-11 16:01:46

标签: r interactive lattice trellis

我希望能够在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

2 个答案:

答案 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

可以想象这种情况:

  1. 然后,您可以使用sink

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

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

  4. 恢复控制台

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

       cat(readLines("pointsselected.log"), sep="\n")
    
  6. 但是从帮助中,交互式选项仍然是实验性的,具体细节可能会在未来发生变化。

答案 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(.)[.]的捕获仍然保持打开状态。有什么想法吗?