「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を設定した応用
少しでも、あなたの解析が楽になりますように!!