こにしき(言葉・日本社会・教育)

関西学院大学(2016.04~)の寺沢拓敬のブログです(専門:言語社会学)。

Rで折れ線の脇にラベル(凡例)をつける


ぼくも今までチマチマ打ち込んでやってきた。
一括でやってくれるパッケージが知りたいです。

以下は今までのチマチマぶりを関数化したもの。
ポイントはコメントにも書いているとおり、余白の設定をうまくやることですね。
とりあえず、「最大文字数×0.2」だけx軸方向に余白をとるように命令していますが、環境によってどうしてもズレるので最後は手動で調整する以外にありません。

LineLabPlot <- function(Matrix,type="l"){
 LabX <- nrow(Matrix)
 LabLng <- max(nchar(colnames(Matrix)))
matplot(Matrix,type=type,pch=1:LabX
         ,xlim=c(1,LabX+(.2*LabLng)))      #余白の設定
 text(LabX,Matrix[nrow(Matrix),]
     ,colnames(Matrix)
     ,pos=4)
}

Usage

LineLabPlot(Matrix, type="l","b",o", etc)

Example 1

dat <- matrix(runif(20),5,4)
colnames(dat) <- c("あきら","いちろう","うめこ","えいどりあーん")
LineLabPlot(dat)


Example 2

dat <- matrix(rnorm(10),10,10)
 for(i in 2:10) dat[,i] <- jitter(dat[,c(i-1)],10*i)
 dat <- t(dat)
colnames(dat) <- rownames(swiss)[36:45]
LineLabPlot(dat,type="b")