set.seed(0)

n <- 100

tibble(
  Pancakes     = rnorm(n = n, mean =  0.8, sd = 1.0),
  Waffles      = rnorm(n = n, mean =  0.0, sd = 2.5),
  `French Toast` = rnorm(n = n, mean = -0.5, sd = 2.0),
) -> data

data |>
pivot_longer(
  cols = everything(),
  names_to = "Breakfast Food",
  values_to = "Quality"
  ) |>
  mutate(
    `Breakfast Food` = factor(`Breakfast Food`, levels = c("Pancakes", "French Toast", "Waffles"))
  ) -> data_long

data_long |>
ggplot(aes(x = `Breakfast Food`, y = Quality, color = `Breakfast Food`)) +
  geom_boxplot(show.legend = F) +
  scale_color_manual(values = c("skyblue3", "hotpink3", "seagreen4"))+
  theme_linedraw()

p <- list(
  pancakes = list(
    sd = sd(data$Pancakes),
    mean = mean(data$Pancakes)
  ),
  french_toast = list(
    sd = sd(data$`French Toast`),
    mean = mean(data$`French Toast`)
  ),
  waffles = list(
    sd = sd(data$Waffles),
    mean = mean(data$Waffles)
  )
)

xcrit = 3.0

p$pancakes$p <- round(1-pnorm(xcrit, mean = p$pancakes$mean, sd = p$pancakes$sd), 2)
p$french_toast$p <- round(1-pnorm(xcrit, mean = p$french_toast$mean, sd = p$french_toast$sd), 2)
p$waffles$p <- round(1-pnorm(xcrit, mean = p$waffles$mean, sd = p$waffles$sd), 2)

data |>
  ggplot() +
  geom_function(fun = dnorm, args = list(mean = p$pancakes$mean, sd = p$pancakes$sd), color = "skyblue3") +
  stat_function(fun = dnorm, args = list(mean = p$pancakes$mean, sd = p$pancakes$sd), geom = "area", fill = "skyblue", alpha = 0.2, xlim = c(xcrit, 10)) +
  geom_label(x = 6.0, y = 0.25, label = paste0("Pancakes : P = ", p$pancakes$p), hjust = "right", color = "skyblue3")+
  geom_function(fun = dnorm, args = list(mean = p$waffles$mean, sd = p$waffles$sd), color = "seagreen4") +
  stat_function(fun = dnorm, args = list(mean = p$waffles$mean, sd = p$waffles$sd), geom = "area", fill = "seagreen4", alpha = 0.2, xlim = c(xcrit, 10)) +
  geom_label(x = 6.0, y = 0.20, label = paste0("Waffles: P = ", p$waffles$p), hjust = "right", color = "seagreen4")+
  geom_function(fun = dnorm, args = list(mean = p$french_toast$mean, sd = p$french_toast$sd), color = "hotpink3") +
  stat_function(fun = dnorm, args = list(mean = p$french_toast$mean, sd = p$french_toast$sd), geom = "area", fill = "hotpink3", alpha = 0.2, xlim = c(xcrit, 10)) +
  geom_label(x = 6.0, y = 0.15, label = paste0("French Toast: P = ", p$french_toast$p), hjust = "right", color = "hotpink3")+
  geom_vline(xintercept = xcrit, linetype = "dotted") +
  labs(x = "Quality (sd)", y = "Frequency")+
  scale_x_continuous(limits = c(-4, 6), breaks = seq(-4.0, 6.0, 1))+
  theme_linedraw()