ggplot2 を使ってヒストグラムを描く。基本的な使い方のメモ。「3. まとめ」に一覧をリストアップしています。
data <- c( 0, 14, 30, 30, 46, 48, 49, 50, 52, 53, 54, 55, 56, 60, 63, 64, 65, 66, 68, 68, 72, 73, 74, 76, 78, 81, 81, 84, 86, 93, 93, 100 )を利用する (乱数をつかって作成した)。データフレームに変換する (列名は score とする):
data <- data.frame(score = data)
library(ggplot2)変数dataに入っているデータフレームの、列名score のデータを利用する、と考えると分かりやすい。わざわざ aes(x = data$score) とせずに aes(x = score) だけで良い様子。
m <- ggplot(data, aes(x = score))
では、geom_histogram()で作図する:
m + geom_histogram()
警告がでる( "stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this." )
階級の幅がデフォルトでは range/30 となっている。binwidth=x を利用して階級の幅を10にしてみよう:
m + geom_histogram(binwidth=10)
さて、全体的に真っ黒で分かりづらい。枠の色を黒、中身の色を透明にしてみる:
m + geom_histogram(binwidth=10, colour="black", fill=NA)
枠をdarkgreen、中身をskyblueにしてもキレイ:
m + geom_histogram(binwidth= 10, colour="darkgreen", fill="skyblue")
枠線の指定はイギリス式にcolour でも アメリカ式にcolorでも、どちらでも通用する。
さて、ここで0 + 10n の値がどちらの階級に含まれているか、確認しておこう。上の図を見ると:
0点より左側にビンが無く、100よりも右側にビンがあるのだ。ということから、binwidth=10 とした時、0~9, 10~19, 20~29,...,90~99, 100~109 という階級になっていることが分かる。
したがって、次のように、binの幅を明示的に指定しても、Fig.4 と同じプロットができる:
m + geom_histogram(breaks=seq(-0.5, 109.5, by=10), colour="darkgreen", fill="skyblue")
さて、灰色の背景色を白色にしたい場合は theme_bw() を利用する。theme_bw() の bw は blackとwhiteの略の様:
m + geom_histogram(binwidth=10, colour="black", fill=NA) + theme_bw()
X軸, Y軸, タイトルをつけるには labs() を利用する:
m + geom_histogram(breaks=seq(-0.5, 109.5, by=10), colour="darkgreen", fill="skyblue") + theme_bw() + labs(y="Frequency", x="Score", title="Histogram of DATA")
軸の幅 (定義域や値域) を指定するには xlim( , ) や ylim( , ) を利用する。Y軸を10まで伸ばしてみる:
m + geom_histogram(breaks=seq(-0.5, 109.5, by=10), colour="darkgreen", fill="skyblue") + ylim(0,10)
図を横にするには coord_flip() を利用:
m + geom_histogram(binwidth=10, colour="darkgreen", fill="white") + coord_flip()
- データの指定: ggplot(変数名, aes(x = 列名))
- ヒストグラム描出: + geom_histogram()
- 幅を指定: + geom_histogram(binwidth = 数値)
- 枠線の色: + geom_histogram(colour = "色")
- ビンの色: + geom_histogram(fill = "色")
- 背景色を透明: + geom_histogram() + theme_bw()
- 軸やタイトル: + geom_histogram() + labs(x = "x軸名", y = "y軸名", title = "タイトル")
- 定義域の指定: + geom_histogram() + xlim( , )
- 値域の指定: + geom_histogram() + ylim( , )
- 図を横に倒す: + geom_histogram() + coord_flip()