「ggplot2」パッケージのgeom_barコマンドを利用した1変数、2変数の棒グラフ、積み上げグラフ作成例の紹介です。
参考:手軽で綺麗なグラフが欲しいなら、ggplot2のまとめです。
https://www.karada-good.net/analyticsr/r-78/
「ggplot2」パッケージを含むtidyverseパッケージのバージョンは1.3.1。実行コマンドはwindows 11のR version 4.1.2で確認しています。
実行コマンド
詳細はコメント、コマンドのヘルプを確認してください。
#ggplot2を含むtidyverseパッケージの読み込み
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
###データ例の作成#####
set.seed(1234)
n <- 1000
TestData <- tibble(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))
#データの確認
TestData
# A tibble: 1,000 x 4
Group ABCData Data1 Data2
<chr> <chr> <int> <dbl>
1 Group 4 C 10 -1.93
2 Group 2 B 2 2.43
3 Group 5 A 13 1.41
4 Group 4 B 11 0.634
5 Group 1 A 22 1.12
6 Group 5 A 8 1.04
7 Group 4 A 12 0.859
8 Group 2 C 19 0.942
9 Group 2 A 14 1.06
10 Group 4 C 14 -0.690
# ... with 990 more rows
########
#色の設定
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)
#棒グラフ:geom_bar + stat_summaryコマンド
#平均でプロット
ggplot(TestData, aes(x = Group, y = Data1)) +
stat_summary(aes(fill = Group), fun = "mean", geom = "bar") +
scale_fill_manual(values = colos)
#数値の確認
TestData %>%
group_by(Group) %>%
summarise(mean = mean(Data1))
# A tibble: 5 x 2
Group mean
<chr> <dbl>
1 Group 1 13.6
2 Group 2 13.8
3 Group 3 13.2
4 Group 4 13
5 Group 5 13.3
#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 = "mean", geom = "bar", position = "stack") +
scale_fill_manual(values = colos)
#数値の確認
TestData %>%
group_by(Group, ABCData) %>%
summarise(mean = mean(Data1))
# A tibble: 15 x 3
# Groups: Group [5]
Group ABCData mean
<chr> <chr> <dbl>
1 Group 1 A 13.1
2 Group 1 B 13.5
3 Group 1 C 12.3
4 Group 2 A 12.7
5 Group 2 B 11.9
6 Group 2 C 14.2
7 Group 3 A 12.8
8 Group 3 B 14.8
9 Group 3 C 12.0
10 Group 4 A 12.2
11 Group 4 B 13.2
12 Group 4 C 13.2
13 Group 5 A 14.1
14 Group 5 B 13.3
15 Group 5 C 12.5
#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 = "mean", geom = "bar", position = "dodge") +
scale_fill_manual(values = colos) +
coord_flip()
出力例
・1変数でプロット
Group数のカウント

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

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

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

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

少しでも、あなたの解析が楽になりますように!!