Next: , Previous: Low-level plotting commands, Up: Graphics



12.3 交互使用图形环境

R 同时提供了允许用户直接用鼠标在一个图上提取和提交信息的函数。 其中最为简单的是函数 locator()

locator(n, type)
等待用户用鼠标左键点击当前图上的特定位置。 这个过程直到由 n (默认 512)个点 被选择,或者另外一个鼠标键被点击了。参数 type 允许在被选择的点上画图并且有 高级画图命令一样的效果;默认情况下不能画图。 locator() 以双分量 xy 的列表 形式返回所选中点的位置信息。

locator() 常常没有参数。当我们很难设定一些图形元素 (如图例和标签)在图上的放置位置时,交互式选定 位置信息可能是一种非常好的办法。 例如,在特异点(outlying point)的旁边 标注一些提示信息,我们可以用下面的命令

     > text(locator(1), "Outlier", adj=0)

(如果当前设备(如 postscript)不支持 交互式使用,则 locator() 会被自动忽略。)

identify(x, y, labels)
允许用户将 labels 定义的标签 (在labels为空时,默认为点的索引值)放置在 xy (利用鼠标左键)决定的点旁边。 当鼠标右键被点击时, 返回选择的点的索引。

有时候我们想标定一个图上的一些特定点,而不是 它们的位置。例如,我们可能期望用户能在图形显示上选择一些 有意思的点,然后以某种方式处理。 假定有两个数值向量 xy 构成的一系列 坐标 (x, y), 我们可以如下使用 函数 identify()

     > plot(x, y)
     > identify(x, y)

函数 identify() 自己不会标识,但允许用户 简单的移动鼠标指针和在一个点附近点击鼠标左键。 如果有一个点在鼠标指针附近,那么它将会把自己的索引值 (也就是在x/y 向量中的位置)标记在点的旁边。 还有一种方案是,你可以通过 identify() 的参数 labels 设置 其他的文字信息(如样本名字等),并且可以通过参数 plot = FALSE 禁止 标记重叠在一起。在这个过程结束时(见上面), identify() 返回所选点的索引值; 你可以利用这些索引值提取 原始向量 xy 中的点信息。