I have a grouped boxplot using data with 3 categories. One category is set as the x-axis of the boxplots, the other is set as the fill, and the last one, as a faceting category.
Ggplot needs to have explicit information on grouping here. You can do that either by using a aes(group=....)
in the desired layer, or moving the fill=...
to the main call to ggplot. Without explicit grouping for a layer, ggplot will group by the factor on the x-axis. Here's some sample code with fake data:
library(ggplot2)
set.seed(123)
nobs <- 1000
dat <- data.frame(var1=sample(LETTERS[1:3],nobs, T),
var2=sample(LETTERS[1:2],nobs,T),
var3=sample(LETTERS[1:3],nobs,T),
y=rnorm(nobs))
p1 <- ggplot(dat, aes(x=var1, y=y)) +
geom_boxplot(aes(fill=var2), position=position_dodge(.9)) +
facet_wrap(~var3) +
stat_summary(fun.y=mean, geom="point", aes(group=var2), position=position_dodge(.9),
color="black", size=4)