I have this data frame
set.seed(1234)
x <- rnorm(80, 5, 1)
df <- data.frame(groups = c(rep("group1",20),
rep("group2",20),
rep("group3",20),
rep("group4",20)),
value = x,
type = c(rep("A", 10),
rep("B", 10),
rep("A", 10),
rep("B", 10),
rep("A", 10),
rep("B", 10),
rep("A", 10),
rep("B", 10)))
And I would like to plot it as violin plot, aligned with a narrow box plot and grouped by 'type':
ggplot(data = df, aes(x = groups, y = value, fill = type)) +
geom_violin()+
geom_boxplot(width = 0.1, outlier.colour = NA)
However, the box plots does not align to the violin plots. What is the missing argument to tell ggplot to do such overlying?
Thanks!
You need to set the
width
of the dodging explicitly for bothgeom
s:For a more thorough explanation, see What is the width argument in position_dodge?