locator 関数

MikuHatsune2013-04-05

高水準関数で図を描いたあとで、R Graphics Deviceをマウスでクリックしていったらその座標を返してくれる関数がある。
これを使うと、プロット点やテキストを絶妙な位置にするためにちまちまと変数をいじってはプロットしいじっては…が簡単になる。
Rで日本地図を描いたわけだが、これを都道府県単位にズームアップして描こうと思ったら、緯度経度を取得してその領域を拡大しないといけない。
地図を描いたとき、

par()$usr

は緯度経度になっているから、この状態で

locator(1)

とでもして好きなところをクリックすれば座標(緯度経度)が得られる。
 
地方の医療は広大な土地に人が分散していて、救急体制が都市部とは違っていたりする。
三重大学医学部附属病院伊勢赤十字病院ドクターヘリが配備されている。これらの病院が担う医療圏は、大学病院が三重県の北半分、伊勢赤十字病院が南半分らしい。
というわけでRで描いてみる。locator関数を使って、テキストや所在地を簡単にいれてみる。
本当はGoogle mapからデータをパクってやりたい(スライド)んだけど、時間があればやる。一番くじ問題にも取り組みたいし。

library(spsurvey)
jpn_GA <- read.shape("JPN_adm/JPN_adm1.shp")
par(mar=c(0, 0, 0, 0)) #余白をなくしていっぱいにプロットする
w0 <- 0.75
xl<- 136.5 + c(-1, 1)*w0  # 経度
yl<- 34.5 + c(-1, 1)*w0   # 緯度
t0 <- c("Mie", "Shiga", "Nara", "Aich", "Ise Red Cross", "Mie Univ")
cols <- replace(rep(NA, length(jpn_GA$NAME_1)), which(jpn_GA$NAME_1 == "Mie"), "lightgreen") #三重県だけ色をつける

plot(jpn_GA, xlim=xl, ylim=yl, col=cols)
# locator を使って好きなところをクリックする。
points(locator(2), col=2:1, pch=16, cex=2) #所在地
text(locator(length(t0)), t0, cex=1.5) #名前