54. 対話的作図関数


対話的作図関数

R では対話的作図関数を使って,マウスなどで図表の位置を示して座標を得たり,プロット点を追加したり除いたりすることが出来る.

座標値の取得:locator()

関数 locator() を使って,デバイス上の任意の位置の座標を知るすることが出来る.関数 locator() を実行すると,デバイス上に "+" マーク(クロスヘア)が表示されるので,これをマウスで操作すればよい.マウスの左ボタンをクリックするとその点が入力される.Windows 版 R ならばマウスの中央のボタンをクリックすることによって入力を終了することが出来る.

 
 locator()              # 引数無しで使うと,入力終了操作が行なわれるまで座標値の入力をする
 locator(10)            # 10 点入力した時点で終了 (既定値は 512 点まで)

locator() は入力した位置の座標 x と y を成分とするリストを返すので,マウスでプロットする際に,以下の様に命令すれば入力した位置の座標を保存することが出来る.

 
 z <- locator()         # z に入力した位置の座標 x と y を成分とするリストが付値

外れ値の近くに目印のテキストを置きたい場合は以下の様にすればよい.

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

点の情報の取得:identify()

対話的に図表のある点の情報(座標,何番目にプロットされた点かを表す観測番号)を得るには関数 identify() を使用する.関数 locator() と同様,マウスで "+" マークを操作し,情報を得たい点をクリックすればよい.

 
 x <- rnorm(20);  y <- rnorm(20)    # y に正規乱数を 20 個入れて
 plot(x, y)                         # (x, y) をプロットする
 identify(x, y, x)                  # マウスでクリックした観測点の x 座標が知りたいとき
 identify(x, y, y)                  # マウスでクリックした観測点の y 座標が知りたいとき
 identify(x, y)                     # マウスでクリックした観測点の観測番号が知りたいとき

[1]  7 10 15

identify() の第 3 引数には各点のラベルを指定することが出来,識別された点の近くに 指定したラベルの座標が描かれる.この引数を省略すると座標ベクトル中の点の番号が 描かれることになる.

identify() は,認識した点が x ,y の何番目のデータであるかを表す観測番号が返される (上記の例では 7 ,10 ,15 番目の点が順に識別されている).

 
 pt <- identify(x,y,y) # identify(x,y) でも identify(x,y,x) でも
 pt                    # pt には観測番号が格納される

[1]  7 10 15

plot=F と指定すればラベルを描き込まずに点の認識だけを行なう (認識された点の番号のベクトルは返される) .

例えばクリックした位置の周囲 0.25 インチ以内に点が無い場合や近くに既に指定済みの点がある場合は,入力された座標値に対して認識し得る点がなかったということで,エラー音と共に以下の様なメッセージが表示されてしまい,ラベルも表示されない.

 
warning: no point with 0.25 inches
warning: nearest point already identified