はじめに
前回の続きです。. . . って1年以上前かよ。
最近実験心理学系の論文で流行っている棒グラフに個別データを載せるやつ。
完成形はこんな感じ↓
geom_bar
で棒グラフ, geom_point
とgeom_line
で個人データを描きます。
目次
下準備
今回使うデータです。
このdf
というデータは個人プロット (geom_point
とgeom_line
) で使います。
id <- rep(seq(1, 10, 1), 4)
A <- c(rep('a1', 20), rep('a2', 20))
B <- rep(c(rep('b1', 10), rep('b2', 10)), 2)
a1b1 <- c(rnorm(10, mean=5, sd=5))
a1b2 <- c(rnorm(10, mean=15, sd=5))
a2b1 <- c(rnorm(10, mean=10, sd=5))
a2b2 <- c(rnorm(10, mean=-10, sd=5))
df <- data.frame(id, A, B, Value = c(a1b1, a1b2, a2b1, a2b2))
#データの出力
df
平均と標準誤差を出す
今回使うデータの平均と標準誤差を出します。
このSummaryData
というデータは棒グラフ (geom_bar
) で使います。
library(tidyverse)
SummaryData <- df %>%
group_by(A, B) %>%
dplyr::summarise(mean_Value = mean(Value),
se_Value = sd(Value)/sqrt(n()))
#計算結果の出力
SummaryData
グラフを描画
棒グラフとエラーバーではdata=SummaryData
, 個別プロットではdata=df
という感じに描画に使用するデータを指定します。
gColor=c("darkorange", "yellow")
ggplot() +
geom_bar(data = SummaryData, aes(x = B, y = mean_Value, fill = B), position = position_dodge(), stat = "identity", alpha = .3,
color = "black", size = 0.7) +
geom_line(data = df, aes(x = B, y = Value, color = B, group = id), stat = "identity", alpha = .3, color = "grey40") +
geom_point(data = df, aes(x = B, y = Value, color = B, group = id), shape = 1, stat = "identity", alpha = .3, color = "grey10") +
geom_errorbar(data = SummaryData, aes(x = B, y = mean_Value, ymax = mean_Value + se_Value, ymin = mean_Value - se_Value),
width = 0.3, position = position_dodge(0.9), stat = "identity", color = "black") +
scale_fill_manual(values = gColor) +
facet_wrap(~ A) +
coord_cartesian(ylim = c(-60, 60))
終わりに
論文で報告する時は注釈に
「ラインプロットは個別値、エラーバーは標準誤差を表す」
を忘れずに。