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(&quot;Group &quot;, 1:5), n, replace = TRUE),
                       ABCData = sample(c(&quot;A&quot;, &quot;B&quot;, &quot;C&quot;), 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(&quot;#4b61ba&quot;, &quot;#d9bb9c&quot;, &quot;#505457&quot;, &quot;#deb7a0&quot;, &quot;#a87963&quot;)

#棒グラフ: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 = &quot;identity&quot;) +
scale_fill_manual(values = colos)
#数値の確認
tapply(TestData&#91;, 3&#93;, TestData&#91;, 1&#93;, 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 = &quot;mean&quot;, geom = &quot;bar&quot;) +
scale_fill_manual(values = colos)
#数値の確認
tapply(TestData&#91;, 3&#93;, TestData&#91;, 1&#93;, mean)
Group 1  Group 2  Group 3  Group 4  Group 5 
13.16588 12.98500 12.65217 12.97143 12.37209
&#91;/code&#93;


<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-2892542339637017"
     data-ad-slot="4852897046"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



#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 = &quot;mean&quot;, geom = &quot;bar&quot;, position = &quot;stack&quot;) +
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 = &quot;red&quot;, fun.data = mean_se, geom = &quot;errorbar&quot;, position = &quot;dodge&quot;) +
stat_summary(fun.y = &quot;mean&quot;, geom = &quot;bar&quot;, position = &quot;dodge&quot;) +
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


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

スポンサードリンク

関連コンテンツ


スポンサードリンク