2016-07-15 2 views
0

В настоящее время у меня есть boxplot ниже, а stat_summary используется для отображения квантилей каждого дистрибутива в виде текста.изменить stat_summary, чтобы показать только несколько точек

group = c(rep(c(1,2),100) ) 
r = rnorm(200,50,63) 
d = data.frame( group = group, r = r ) 
head(d) 
ggplot(data = d, aes(factor(group), r)) + 
    geom_boxplot() + 
    stat_summary(geom="text", fun.y= quantile, 
       aes(label=sprintf("%1.0f", ..y..)), 
       position=position_nudge(x=0.33), size=3) 

enter image description here

Вы можете увидеть квантили печатаются как текст через fun.y= quantile строки кода. Как я могу изменить код, чтобы печатать только медианную, а min и max - печатать 3 очка вместо 5?

я могу создать функцию и выберите квантили Я хочу

ff= function (x) 
{ 
    return(quantile(x)[1]) 
} 

и использовать fun.y= quantile и он будет печатать то, что я хочу, но как я могу включить в fun.y непосредственно в stat_summary вызова?

спасибо.

+0

Просто поместите эту функцию в где 'quantile' теперь:' fun.y = функция (х) квантиль (х) [с (1,3, 5)] 'или более прозрачно,' fun.y = function (x) quantile (x, c (0, .5, 1)) ' – alistaire

ответ

4

Добавить fun.args в stat_summary следующим образом:

ggplot(data = d, aes(factor(group), r)) + 
    geom_boxplot() + 
    stat_summary(geom="text", fun.y=quantile, 
       fun.args=list(probs=c(0,.5,1)), 
       aes(label=sprintf("%1.0f", ..y..)), 
       position=position_nudge(x=0.33), size=3) 
Смежные вопросы