# r effect estimate plot as error bars by group

My goal is to create a plot showing effect estimates for 4 different levels of a categorical variable X grouped based on a grouping variable M1 like this. This example below has 5 levels for each variable but my X has 4 levels

Suppose this is my test dataset with effect estimates

``````effect_data <- data.frame(
Level = factor(rep(1:4, each = 12)),  # Assuming 12 sets of analyses
EffectEstimate = runif(48, min = -2, max = 2),  # Replace with your actual effect estimates
LowerCI = runif(48, min = -3, max = -1),  # Replace with your actual lower CIs
UpperCI = runif(48, min = 1, max = 3),  # Replace with your actual upper CIs
M1  = factor(rep(letters[1:12], times = 4))
)
``````

My plot ends up looking like this

``````# Plot the effect estimate as a bar chart
ggplot(effect_data, aes(x = Level, y = EffectEstimate)) +
geom_bar(stat = "identity", position = "dodge", width = 0.7, fill = "blue") +
geom_errorbar(aes(ymin = LowerCI, ymax = UpperCI), position = position_dodge(0.7), width = 0.25) +
coord_flip() +
facet_grid(.~Level)+
labs(
title = "Effect Estimates with Confidence Intervals",
x = "Results from 12 different Models",
y = "Effect Estimate"
) +
theme_minimal()
``````

This is not what I want, I am trying to generate a plot like the one above , any help is much appreciated. Thanks.

### >Solution :

``````effect_data <- data.frame(
Level = factor(rep(1:4, each = 12)),
# Assuming 12 sets of analyses
EffectEstimate = runif(48, min = -2, max = 2),
# Replace with your actual effect estimates
LowerCI = runif(48, min = -3, max = -1),
# Replace with your actual lower CIs
UpperCI = runif(48, min = 1, max = 3),
# Replace with your actual upper CIs
M1  = factor(rep(letters[1:12], times = 4))
)
``````

From your description I am not sure what you are looking.
Here are two variants. Maybe one of them is what you desire?

``````library(tidyverse)

# Variant A
ggplot(effect_data,
aes(
x = Level,
y = EffectEstimate,
group = M1,
fill = M1
)) +
geom_errorbar(aes(ymin = LowerCI, ymax = UpperCI),
position = position_dodge(0.7),
width = 0.25) +
labs(title = "Effect Estimates with Confidence Intervals",
x = "Results from 12 different Models",
y = "Effect Estimate") +
geom_bar(stat = "identity",
position = "dodge",
width = 0.7) +
theme_minimal()
``````

``````
# Variant B
ggplot(effect_data,
aes(
x = M1,
y = EffectEstimate,
group = Level,
fill = Level
)) +
geom_errorbar(aes(ymin = LowerCI, ymax = UpperCI),
position = position_dodge(0.7),
width = 0.25) +
labs(title = "Effect Estimates with Confidence Intervals",
x = "Results from 12 different Models",
y = "Effect Estimate") +
geom_bar(stat = "identity",
position = "dodge",
width = 0.7) +
theme_minimal()
``````