使用ggplot2在一个因子条件下覆盖boxplot上的抖动点

时间:2015-06-04 15:32:13

标签: r ggplot2 overlay boxplot jitter

我正在制作一个箱形图,其条件与此示例相似:

p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot(aes(fill = factor(am)))

数据集中的点数很少,我想通过覆盖数据点来直观地表达这一点。我想覆盖由相同因素着色的点&#34; am&#34;我尝试这样做:

p + geom_boxplot(aes(fill = factor(am))) + geom_jitter(aes(colour = factor(am)))

点数由因素&#34; am&#34;但没有间隔,只能放在他们所关联的箱子图上。相反,他们混合并涵盖两者。 有没有人知道条件geom_jitter如何使点与因子相关联&#34; am&#34;?

1 个答案:

答案 0 :(得分:3)

欢迎来到SO!这是我的尝试。它有点笨拙,但做得很好。诀窍是将x映射到具有手动构造的偏移量的虚拟变量。我添加了一个填充比例来突出显示点定位。

mtcars$cylpt <- as.numeric(factor(mtcars$cyl)) + ifelse(mtcars$am == 0, -0.2, 0.2)
ggplot(mtcars, aes(factor(cyl), mpg)) + 
  geom_boxplot(aes(fill = factor(am))) + 
  geom_point(aes(x = cylpt, colour = factor(am)), position = "jitter") +
  scale_fill_manual(values = c("white", "gray"))

enter image description here