2011-12-14 5 views
5

Trong ggplot boxplot, thật dễ dàng để sử dụng jitter để thêm các điểm dữ liệu thô với các mức độ khác nhau của jitter. Với số không jitter, mã sau đâycó thể bù đắp điểm jitter trong hộp ggplot

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") 

tạo lô dưới đây.

Có thể sử dụng số không jitter nhưng thêm chênh lệch sao cho các điểm nằm trong một dòng nhưng được dịch chuyển sang trái 25% chiều rộng hộp? Tôi đã thử geom_point với dodge nhưng điều này tạo ra một jitter. enter image description here

Trả lời

7

Nếu chúng tôi chuyển đổi nhóm thành số và sau đó thêm một bù đắp, bạn dường như có được kết quả mong muốn. Có thể là một/cách hiệu quả hiệu quả hơn, nhưng cung cấp cho này một whirl:

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

tôi chuyển chúng ngay, nhưng rõ ràng là bạn có thể chuyển chúng sang trái cũng bằng cách trừ .25 hoặc bất cứ số mang đến cho bạn cái nhìn mà bạn đang theo đuổi. – Chase

+0

Rất tốt. Cảm ơn! – user441706