Rでコマンド:ggplot2のgeom_barコマンドで棒グラフ


投稿日: Rの解析に役に立つ記事

ggplot2パッケージのgeom_barコマンドを利用した1変数、2変数の棒グラフ、積み上げグラフ作成例の紹介です。

参考:手軽で綺麗なグラフが欲しいなら、ggplot2のまとめです。
https://www.karada-good.net/analyticsr/r-78/

実行コマンドはwindows 7およびOS X 10.11.2のR version 3.2.2で確認しています。


実行コマンド

詳細はコメント、コマンドのヘルプを確認してください。

#パッケージのインストール
install.packages("ggplot2")

#ライブラリの読み込み
library("ggplot2")

###データ例の作成#####
n <- 1000
TestData <- data.frame(Group = sample(paste0("Group ", 1:5), n, replace = TRUE),
                       ABCData = sample(c("A", "B", "C"), n, replace = TRUE),
                       Data1 = sample(0:26, n, replace = TRUE),
                       Data2 = rnorm(n))
#データの確認
head(TestData)
Group ABCData Data1      Data2
1 Group 5       C    11 -0.3870392
2 Group 2       C     9 -0.8506050
3 Group 1       B    23  0.5252670
4 Group 3       B     2  1.4922573
5 Group 2       A    13 -0.1621703
6 Group 4       A    11  1.0200078
########

#色の設定
colos <- c("#4b61ba", "#d9bb9c", "#505457", "#deb7a0", "#a87963")

#棒グラフ:geom_barコマンド
#1変数でプロット
ggplot(TestData, aes(x = Group)) + geom_bar(aes(fill = Group)) +
scale_fill_manual(values = colos)

#2変数でプロット
#合計でプロット
ggplot(TestData, aes(x = Group, y = Data1)) + geom_bar(aes(fill = Group), stat = "identity") +
scale_fill_manual(values = colos)
#数値の確認
tapply(TestData[, 3], TestData[, 1], sum)
Group 1 Group 2 Group 3 Group 4 Group 5 
2778    2597    2619    2724    2128

#棒グラフ:geom_bar + stat_summaryコマンド
#平均でプロット
ggplot(TestData, aes(x = Group, y = Data1)) +
stat_summary(aes(fill = Group), fun.y = "mean", geom = "bar") +
scale_fill_manual(values = colos)
#数値の確認
tapply(TestData[, 3], TestData[, 1], mean)
Group 1  Group 2  Group 3  Group 4  Group 5 
13.16588 12.98500 12.65217 12.97143 12.37209

#1変数で積み上げグラフ:geom_barコマンド
ggplot(TestData, aes(x = Group)) +
geom_bar(aes(fill = ABCData)) +
scale_fill_manual(values = colos)

#2変数で積み上げグラフ:geom_bar + stat_summaryコマンド
#positionオプションにstackを設定,dodgeにすると横に並べる
#平均でプロット
ggplot(TestData, aes(x = Group, y = Data1)) +
stat_summary(aes(fill = ABCData), fun.y = "mean", geom = "bar", position = "stack") +
scale_fill_manual(values = colos)
#数値の確認
tapply(TestData[, 3], TestData[, 1:2], mean)
ABCData
Group          A        B        C
Group 1 15.22388 12.36232 12.06667
Group 2 14.52542 12.76389 11.89855
Group 3 11.67692 12.06452 13.90000
Group 4 12.88462 12.43284 13.63077
Group 5 11.51852 12.53125 13.03704

#stat_summaryのpositionにdodgeを設定した応用
#グラフを横向きにしてエラーバーを追加
ggplot(TestData, aes(x = Group, y = Data1, fill = ABCData)) +
stat_summary(color = "red", fun.data = mean_se, geom = "errorbar", position = "dodge") +
stat_summary(fun.y = "mean", geom = "bar", position = "dodge") +
scale_fill_manual(values = colos) +
coord_flip()

出力結果

・1変数でプロット
Group数のカウント
geom_bar1

・2変数でプロット
Group毎のData1の合計
geom_bar2

・geom_bar + stat_summaryコマンド
Group毎のData1の平均
geom_barstat_summary

・1変数で積み上げグラフ
Tgeom_bar1

・2変数で積み上げグラフ
Tgeom_bar2

・stat_summaryのpositionにdodgeを設定した応用
positiondodge


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク