[英]Restrain scattered jitter points within a violin plot by ggplot2
以下用于在 ggplot2 中生成小提琴图:
ggplot(violin,aes(x=variable,y=log(value+0.5),color=Group)) +
geom_violin(scale="width") +
geom_jitter(aes(group=Group), position=position_jitterdodge()) +
stat_summary(fun.y="mean",geom="crossbar", mapping=aes(ymin=..y.., ymax=..y..),
width=1, position=position_dodge(),show.legend = FALSE) +
theme(axis.text.x = element_text(angle = 45, margin=margin(0.5, unit="cm")))
结果图如下所示;
如您所见,有些点在小提琴形状的边界外抖动,我需要将这些点放在小提琴的内部。 我玩过不同程度的抖动,但都取得了成功。 我很感激任何实现这一目标的指针。
ggbeeswarm
包具有 geoms quasirandom 和 beeswarm,它们完全符合您的要求: https : //github.com/eclarke/ggbeeswarm
选项1
使用 geom_beeswarm 包中的 geom_quasirandom 函数:
quasirandom geom 是一种在类别内偏移点以减少过度绘制的便捷方法。 使用 vipor 包。
library(ggbeeswarm)
p <- ggplot(mpg, aes(class, hwy))
p + geom_violin(width = 1.3) + geom_quasirandom(alpha = 0.2, width = 0.2)
选项 2
不是一个令人满意的答案,因为通过限制水平抖动,我们破坏了处理过度绘图的目的。 但是您可以放大小提琴图的width = 1.3
( width = 1.3
),并使用alpha
来提高透明度并限制水平抖动( width = .02
)。
p <- ggplot(mpg, aes(class, hwy))
p + geom_violin(width = 1.3) + geom_jitter(alpha = 0.2, width = .02)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.