Можно ли сместить точки дрожания в поле ggplot - PullRequest
5 голосов
/ 14 декабря 2011

В 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 Ответ

7 голосов
/ 14 декабря 2011

Если мы преобразуем группу в числовое значение, а затем добавим смещение, вы получите желаемый результат.Вероятно, есть более эффективный / действенный способ, но вихрь:

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

...