可以在ggplot boxplot中偏移一个抖动点

时间:2011-12-14 18:47:40

标签: r ggplot2 boxplot

在ggplot boxplot中,很容易使用抖动来添加具有不同抖动程度的原始数据点。零抖动时,以下代码

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_point尝试dodge,但这会产生抖动。enter image description here

1 个答案:

答案 0 :(得分:7)

如果我们将组转换为数字然后添加偏移量,您似乎可以获得所需的输出。可能有一种更有效/更有效的方式,但请给它一个旋转:

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