能否在ggplot的箱线图中抵消抖动点?

6
在 ggplot 的 boxplot 中,使用 jitter 很容易添加不同程度的原始数据点。使用以下代码可以实现无抖动效果:
dat <- data.frame(group=c('a', 'b', 'c'), values = runif(90))

ggplot(dat, aes(group, values)) + 
geom_boxplot(outlier.size = 0) + 
geom_jitter(position=position_jitter(width=0), aes(colour=group), alpha=0.7) + 
ylim(0, 1) + stat_summary(fun.y=mean, shape=3, col='red', geom='point') +
opts(legend.position = "right") + ylab("values") + xlab("group")

生成下面的图表。

是否可能使用零抖动,但添加偏移量,使点在一条线上,但向左偏移盒子宽度的25%?我尝试使用geom_pointdodge,但这会生成抖动。enter image description here

1个回答

8
如果我们将组转换为数字,然后添加一个偏移量,你似乎可以得到所需的输出结果。可能有更有效/高效的方法,但是试试这个吧:
ggplot(dat, aes(group, values)) + 
  geom_boxplot(outlier.size = 0) + 
  geom_point(aes(x = as.numeric(group) + .25, colour=group), alpha=0.7) + 
  ylim(0, 1) + stat_summary(fun.y=mean, shape=3, col='red', geom='point') +
  opts(legend.position = "right") + ylab("values") + xlab("group")

enter image description here


我将它们向右移动,但显然你也可以通过减去0.25或任何能够给你想要的外观的数字来将它们向左移动。 - Chase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接