表題の通り。
次の「スイスデータ」のように各ケース自体に重要な意味があり、かつ、ケース数がけっこう多いデータを、Rのデフォ関数でプロットすると、図のように文字が重なってしまうことがあります。
> data(swiss) #スイスデータをロード > > # デフォルト関数でのやり方 > plot(swiss[,1:2],col=2,type="n",main="デフォルトの text()関数を使用") > text(swiss[,1:2],labels=rownames(swiss))
解決方法
これを解決する方法が library(maptools) パッケージの pointLabel() 関数。
ここで教えてもらいました。
http://www.okada.jp.org/RWiki/?%BD%E9%B5%E9%A3%D1%A1%F5%A3%C1%20%A5%A2%A1%BC%A5%AB%A5%A4%A5%D6(9)#s45c066f
> # pointLabel 関数利用 > library(maptools) #パッケージ読み込み(最初はインストールが必要) > > plot(swiss[,1:2],pch=20,col=2,main="pointLabel関数を使用") > pointLabel(swiss[,1:2],labels=rownames(swiss))
もともとケース数が47もあるので、一目瞭然とはいきませんが、ラベルの文字の視認性はぐっとあがっています
(12月29日追記)別解「引き出し線を使う方法」
library(wordcloud) に入っている textplot()を使う方法を立命館大学の樋口耕一先生([twitter:@khcoder])に教えていただきました*1。
ただし、textplot()が備わっているwordcloudパッケージは R.14以降しか対応していないようなので、古いバージョンで以下のコードを走らせてもエラーがでますのでご注意(私も最初それで手間取りました)
wordcloudパッケージの(見るだけでも楽しい)かんたんな解説はここにあります。
wordcloud makes words less cloudy « Fells Stats
(日本語のページは未発見)
library(wordcloud) library(tm) textplot(swiss[,1],swiss[,2] ,words=rownames(swiss) ,main = "textplot() 使用" ,xlim=c(30,100),ylim=c(0,90) ) # 文字がすべておさまるように調整
2013年11月30日追記
points()のように重ね書き関数として使いたい場合は、
textplot(x,y, new=FALSA)
のように new パラメータをいじる。