2011-12-14 76 views
5

在ggplot 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_pointdodge,但這產生了抖動。 enter image description here

回答

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

+0

我轉移他們的權利,但很明顯,你可以移動它們離開以及通過減去0.25或任何號碼給你你在追求的樣子。 – Chase 2011-12-14 19:11:51