使用 ggplot2 在箱线图上叠加抖动点
Overlaying jittered points on boxplot conditioned by a factor using ggplot2
我正在制作箱线图,条件是类似于此示例的因素:
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot(aes(fill = factor(am)))
数据集中的点很少,我想通过叠加数据点来直观地表达这一点。我想覆盖由相同因素 "am" 着色的点,我尝试这样做:
p + geom_boxplot(aes(fill = factor(am))) + geom_jitter(aes(colour = factor(am)))
这些点由 "am" 因素着色,但没有间隔以仅位于与其关联的箱线图上。相反,它们混合并涵盖了两者。
有谁知道 geom_jitter
的条件如何使这些点与 "am" 因素相关联?
欢迎来到 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"))
我发现 link 可以解决您的问题:
https://datavizpyr.com/how-to-make-grouped-boxplot-with-jittered-data-points-in-ggplot2/
geom_jitter(位置=position_jitterdodge())
我正在制作箱线图,条件是类似于此示例的因素:
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot(aes(fill = factor(am)))
数据集中的点很少,我想通过叠加数据点来直观地表达这一点。我想覆盖由相同因素 "am" 着色的点,我尝试这样做:
p + geom_boxplot(aes(fill = factor(am))) + geom_jitter(aes(colour = factor(am)))
这些点由 "am" 因素着色,但没有间隔以仅位于与其关联的箱线图上。相反,它们混合并涵盖了两者。
有谁知道 geom_jitter
的条件如何使这些点与 "am" 因素相关联?
欢迎来到 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"))
我发现 link 可以解决您的问题:
https://datavizpyr.com/how-to-make-grouped-boxplot-with-jittered-data-points-in-ggplot2/
geom_jitter(位置=position_jitterdodge())