[R] ggplo2 でヒストグラム描出入門

ggplot2 を使ってヒストグラムを描く。基本的な使い方のメモ。「3. まとめ」に一覧をリストアップしています。

1. 準備
分析する練習データは:
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)


2. 作図
さて、ggplot2を読み込んでから、ggplot()を利用し、変数 m に入れる:
library(ggplot2)
m <- ggplot(data, aes(x = score))
変数dataに入っているデータフレームの、列名score のデータを利用する、と考えると分かりやすい。わざわざ aes(x = data$score) とせずに aes(x = score) だけで良い様子。

では、geom_histogram()で作図する:
m + geom_histogram()
Fig 1. 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)
Fig 2. m + geom_histogram(binwidth=10)


さて、全体的に真っ黒で分かりづらい。枠の色を黒、中身の色を透明にしてみる:
m + geom_histogram(binwidth=10, colour="black", fill=NA)
Fig 3. m + geom_histogram(binwidth=10, colour="black", fill=NA)


枠をdarkgreen、中身をskyblueにしてもキレイ:
m + geom_histogram(binwidth= 10, colour="darkgreen", fill="skyblue")
Fig 4. 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")
Fig 5. 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()
Fig 6. 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")
Fig 7. 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)
Fig 8. 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()
Fig 9. m + geom_histogram(binwidth=10, colour="darkgreen", fill="white") + coord_flip()



3. まとめ
  • データの指定: 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()

4. 参考

0 件のコメント:

コメントを投稿

[Windows] AutoHotKey その2

職場の Windows PC に AutoHotKey というソフトを導入して、キーバインドを変更 したら、ものすごくキー入力が楽になった。ホームポジションから手をはずさずに上下左右、行頭・行末にカーソルを移動させたり、文字を削除したりできる。ストレスフリー。 カーソル移動系...