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 中的點資訊。