2014年3月26日水曜日

調査地点名書き

修論手伝いで野外調査の予定だったが、雨のためサソリモドキ論文へ。ひとまず下図が完成。

これまで結構苦労させられた、調査地点名書きがかなり楽にできるようになった。

これまでは地図をどこかから入手して、それにお絵描きソフトで文字を書き入れていた。印刷してみたらフォントが小さかったりした場合、全ての文字をポチポチと編集しなければなならず、調査地点が100地点近くあるととても厄介な作業となっていた。

ということで、Rで作図した地図上にプロット名などの文字(テキスト)を加える方法のメモ。

例えば、調査地点が島内に3地点あり、それぞれに対応した地点名を島の外に書きたいとする。


下記のtext()を使えば、指定した座標にテキストを書き込むことができるのでこれを使う。当然、座標データが必要なのだが、locator()を使うとマウスでクリックした地点の座標を読んでくれる。

a<-locator(3) #文字を書込みたい地点でクリックをする。3は3地点分の意味。
text(a,c("plot1","plot2","plot3")) #""内の文字をlocator()のクリック順に出力する。



locator()で入手したデータはリスト型になっているどうなのだが、そのままの型ではwrite()で上手く出力できなかった。

で、データフレーム型に変換したら無事に出力、入力ができた。

b<-data.frame(a) #locator()で入手したデータをデータフレームに変える。
write.table(b,"yonaguni.txt") #座標データを「yonaguni.txt」として保存した。
a<-read.table("yonaguni.txt",header=T) #「yonaguni.txt」を「a」として読み出せば、上述の方法で出力できる。

今回のように地点名を離して出力した場合、地点と地点名を線で結ぶ必要があるが、これはsegments()を使えば一気にやれる。

例えば、テキストの座標が、


プロットの座標が、


として保存されている場合、

segments(a$x,a$y,dat_5$e,dat_5$n)

とすれば良い。


ただ、テキストの座標は、テキストの真ん中を示しているので、微調整は必要かも。テキストの座標が書かれているファイルをテキストエディットなどで開いて、数値を適当に変更すれば良い。