在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
,但这会产生抖动。
答案 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")