ヒストグラムと箱ひげ図
今日は中休みということで、簡単なグラフを2つ。
ヒストグラムと箱ヒゲ図。
Rにはhist関数とtruehist関数(MASSパッケージ)があります。両者の違いはここをご覧ください。
> jpeg("hist.jpg",width=720) > layout(t(1:2)) > hist(iris$Sepal.Length,main="hist") > > library(MASS) > truehist(iris$Sepal.Length,main="truehist") > dev.off()
truehist関数は総面積が1に基準化されるので、縦軸が異なります。
あと、truehist関数は色がつきます。
で、histは返り値を持つので、こんなことができます。
> jpeg("hist2.jpg") > str(x <- hist(iris$Sepal.Length,plot=FALSE)) List of 7 $ breaks : num [1:9] 4 4.5 5 5.5 6 6.5 7 7.5 8 $ counts : int [1:8] 5 27 27 30 31 18 6 6 $ intensities: num [1:8] 0.0667 0.36 0.36 0.4 0.4133 ... $ density : num [1:8] 0.0667 0.36 0.36 0.4 0.4133 ... $ mids : num [1:8] 4.25 4.75 5.25 5.75 6.25 6.75 7.25 7.75 $ xname : chr "iris$Sepal.Length" $ equidist : logi TRUE - attr(*, "class")= chr "histogram" > hist(iris$Sepal.Length,main="plot the counts",ylim=c(0,max(x$counts)*1.2)) > text(x=x$breaks+diff(x$breaks)[1]/2,y=x$counts,labels=x$counts,pos=3) > dev.off()
- 箱ひげ図
Rを使って良かったな〜と思えた関数です。
エクセルで箱ひげ図を描くときは結構、苦労しました。
> jpeg("boxplot.jpg") > boxplot(iris[,-4]) > dev.off()
で、boxplotも返り値を持ちます。
> jpeg("boxplot2.jpg") > str(x <- boxplot(iris[,-4],plot=FALSE)) List of 6 $ stats: num [1:5, 1:4] 4.3 5.1 5.8 6.4 7.9 2.2 2.8 3 3.3 4 ... $ n : num [1:4] 150 150 150 150 $ conf : num [1:2, 1:4] 5.63 5.97 2.94 3.06 3.9 ... $ out : num [1:4] 4.4 4.1 4.2 2 $ group: num [1:4] 2 2 2 2 $ names: chr [1:4] "Sepal.Length" "Sepal.Width" "Petal.Length" "Species" > boxplot(iris[,-4],outline=FALSE,ylim=c(0,max(x$stats)*1.2),boxwex=.5) > lapply(2:ncol(iris)-1,function(i) points(x=i+rnorm(nrow(iris),mean=0,sd=.02),y=iris[,i],pch=20,cex=.5)) > lapply(2:ncol(iris)-1,function(i) text(x=rep(i-.25,3),y=x$stats[2:4,i],labels=x$stats[2:4,i],pos=2,cex=.8)) > dev.off()