I am currently working on a code that involves representing the mean standard deviation of the total weight of species collected over forest stands containin shelterbelts (Yes, No) further I want the error bars to represent the confidence interval of the mean. But I get the error bars, however I want to add the jitter plots as well as the geompoint (as seen in the picture) How can I do this without producing an error?
Code:
# Calculate the mean and standard deviation for each level of the variable
mean_sd_yes <- data %>%
filter(`Type of plot with shelterbelt` == "Yes") %>%
group_by("Yes") %>%
summarise(mean_weight = mean(Weight, na.rm = TRUE),
sd_weight = sd(Weight, na.rm = TRUE))
#confidence interval
mean_sd_yes$ci_lower <- mean_sd_yes$mean_weight - qt(0.975, 12 - 1) * mean_sd_yes$sd_weight / sqrt(12)
mean_sd_yes$ci_upper <- mean_sd_yes$mean_weight + qt(0.975, 12 - 1) * mean_sd_yes$sd_weight / sqrt(12)
mean_sd_no <- data %>%
filter(`Type of plot with shelterbelt` == "No") %>%
group_by("No") %>%
summarise(mean_weight = mean(Weight, na.rm = TRUE),
sd_weight = sd(Weight, na.rm = TRUE))
#confidence interval
mean_sd_no$ci_lower <- mean_sd_no$mean_weight - qt(0.975, 8 - 1) * mean_sd_no$sd_weight / sqrt(8)
mean_sd_no$ci_upper <- mean_sd_no$mean_weight + qt(0.975, 8 - 1) * mean_sd_no$sd_weight / sqrt(8)
# Create a separate dataframe for the points
points_df_yes <- data %>%
filter(`Type of plot with shelterbelt` == "Yes") %>%
group_by("Yes", sd) %>%
summarise ("Yes", sd)
points_df_no <- data %>%
filter(`Type of plot with shelterbelt` == "No") %>%
group_by("No", sd) %>%
summarise ("No", sd)
# Plot the mean and error bars
ggplot(mean_sd, aes(x = `Type of plot with shelterbelt`, y = sd_weight)) +
geom_errorbar(data = mean_sd_yes, aes(x = "Yes",
ymin = ci_lower,
ymax = ci_upper),
width = 0.2) +
geom_errorbar(data = mean_sd_no, aes(x= "No",
ymin = ci_lower,
ymax = ci_upper),
width = 0.2)
Desired output
Current output
Here is one approach:
library(tidyverse)
set.seed(0)
tibble(
x = rep(1:3, each = 100),
y = runif(300, 0, 1)
) %>%
ggplot(aes(x = x, y = y)) +
geom_point(alpha = 0.25) +
stat_summary(fun = mean, size = 1) +
stat_summary(fun.data = mean_cl_normal, geom = "errorbar", width = 0.1)