CodePudding user response:
The issue is that the global aesehtitics x, y and color are inherited by each geom layer. As a side effect this means that ggplot2 requires the columns mapped on these aesthetics to be present in the data used for each layer, which is not the case for the geom_rect, i.e. your dataset rec has no columns subcategory, Type 1 Error or Model. To fix that add inherit.aes = FALSE to geom_rect to prevent the global aes to be inherited.
Note: I also removed the expansion of the x scale by adding expand = c(0, 0) to scale_x_discrete.
ggplot(data = d, aes(x = subcategory, y = `Type 1 Error`, color = Model))
scale_x_discrete(seq_len(nFac), expand = c(0, 0))
geom_rect(
data = rec,
aes(
xmin = xmin,
xmax = xmax,
alpha = alpha
),
ymin = -Inf,
ymax = Inf,
fill = "lightblue",
inherit.aes = FALSE
)
geom_errorbar(
data = d, aes(ymin = LL, ymax = UL),
width = 0.5, position = "dodge"
)
facet_wrap(~category,
labeller = as_labeller(\(x) paste("Cor(G\u0079, G\u1D07) =", x)),
strip.position = "top"
)
theme_classic()
theme(
panel.spacing = unit(0, "lines"),
plot.title = element_text(hjust = 0.5),
strip.placement = "outside",
axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
legend.position = "none"
)
ggtitle("a. Var(GxE) = 0")
xlab("Cor(\u0190\u0079, \u0190\u1D07)")
geom_abline(aes(slope = 0, intercept = 0.05), linetype = "dashed")
ylim(min, max)



