I would appreciate any help on how to add the error bars to the following plot. I have changed the values of “width” or “position_dodge” but it didn’t work.
library(ggplot2)
library(dplyr)
library(tidyr)
library(ggh4x)
df <- expand.grid(
group = c("Children", "Teenagers"),
task = c("A", "B", "C"),
hemisphere = c("Left", "Right"),
region = c("Frontal", "Motor"),
frequency = c("Alpha", "Beta", "Theta")
)
df$power <- runif(nrow(df)) # Random power values for demonstration
avg_power <- df %>%
group_by(task, group, frequency) %>%
summarize(mean_power_left = mean(power[hemisphere == "Left"]),
mean_power_right = mean(power[hemisphere == "Right"]),
mean_power_frontal = mean(power[region == "Frontal"]),
mean_power_motor = mean(power[region == "Motor"]),
.groups = 'drop')
avg_power_long <- avg_power %>%
pivot_longer(cols = starts_with("mean_power"),
names_to = "area",
names_pattern = "mean_power_(.*)") %>%
mutate(area = factor(area, levels = c("left", "right", "frontal", "motor"),
labels = c("Left", "Right", "Frontal", "Motor"))) %>%
arrange(task, group, frequency, area) %>%
select(group, task, frequency, area, value) %>%
rename(power = value)
avg_power_long <- avg_power_long %>%
mutate(region = case_when(area == c("Left", "Right") ~ "Hemisphere",
area == c("Frontal", "Motor") ~ "Area"),
.before = power)
interaction_plot <- avg_power_long %>%
mutate(frequency = factor(frequency, levels = c("Theta", "Alpha", "Beta"))) %>%
ggplot(aes(x = task, y = power, color = group)) +
stat_summary(fun = mean, geom = "line", aes(group = group), linewidth = 1.5) +
stat_summary(fun.data = mean_cl_boot, geom = "errorbar", width = 0.3,
position = position_dodge(0.4)) +
facet_nested(frequency ~ region + area) +
labs(title = "",
x = "Task", y = "Mean EEG Band Power",
color = "Group") +
theme_minimal(base_size = 15) +
theme(strip.text.x = element_text(size = 14),
strip.placement = "outside")
print(interaction_plot)
I am not sure whether the problem is related to “mean_cl_boot”.