ggplot2のTips その①(R)

stat_boxplot()とgeom_boxplot()

箱ひげ図について、ggplot2の使い方に着目しながら見ていきます。
100名の被験者について、各3つの条件を適用した結果を示すとします。
各条件での箱ひげ図をプロットし、個々のデータポイントを上書きしていきます。
特定の条件の被験者とで、そのマーカーや色を分けることにします。
以前の記事を参考に、次のようなスクリプトを書いてみました。

x<-rnorm(100,100,100)
y<-rnorm(100,300,120)
z<-rnorm(100,500,80)

len<-length(x)

d<-data.frame(
	cond=c(rep("Small",len),rep("Large",len),rep("Total",len))
	,rate=c(x,y,z))
	
dat<-transform(d, cond=factor(cond,levels=c("Small","Large","Total"))) #描画順を整える。

barcols<-"white"
boxcols<-"lightcyan2"
dotcols<-rep(c(rep("magenta",length(x)-1),"blue"),3)
dtshape<-rep(c(rep(1,length(x)-1),16),3)
dtstrk<-rep(c(rep(1,length(x)-1),1),3)

3つの文字列要素が100ずつ含まれる「cond」と、ランダムな数字300個の「rate」の2列によりなるLong型のデータフレーム「dat」を作成しました。
このまま箱ひげ図を描こうとすると、列condの3つが、「Large、Small、Total」の順でプロットされます。
試しにlevels(d$cond)とすると、levels: Large Small Total、とアルファベット順で表示されます。
11行目では、factorでカテゴリーを要素とした任意のベクトルを指定し、元のdを新たなdatへ変換しています。

その次に、ggplot2で描画していきます。

g<-ggplot(dat,aes(x=cond,y=rate))+
	stat_boxplot(geom='errorbar',width=0.5,lwd=2,color=barcols)+
	geom_boxplot(outlier.shape=NA,lwd=2,fill=boxcols,color=barcols)+
	geom_point(position=position_jitter(width=0.1),size=3,colour=dotcols
		,shape=dtshape,stroke=dtstrk)+
	theme(panel.background=element_rect(fill="gray80")
		,axis.title.x=element_text(size=20)
		,axis.title.y=element_text(size=20)
		,axis.text.x=element_text(size=15)
		,axis.text.y=element_text(size=15)
		)+
	labs(x="",y="")

plot(g)
ggplot2での蜂群図

geom_boxplot()のみでは上下の平行な線分が描かれないので、stat_boxplot()でそのエラーバーを設定しています。
エラーバーは上下の平行線が垂直に交わるような「エ」状なので、エラーバーの上に箱ひげ図を重ねています。線の太さは、それぞれ同一の「lwd(line width)」パラメータを与えることで合わせてあります。
geom_point()では、shapeでマーカーの形状、strokeでマーカーの線の太さを指定しています。
マーカー種はR組み込みのpchパラメータと一緒な様子。
参考:53. グラフィックスパラメータ(弐)

今回の例では、一つのデータポイントのみを他と異なるドットで区別しています。
マーカーの種類(shape)、サイズ(size)、色(colour)、線の太さ(stroke)は、ベクトルで個別に任意で指定できます。
上の15~17行目では、1~99の要素まで同一で、最後の要素のみ他と異なるマーカー種、色、線の太さを与えています。
theme()では背景の灰色、xy軸タイトルと目盛りのフォントサイズを指定しています。

↑ PAGE TOP