2016-07-15 67 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 行代码印刷为文本。如何修改代码以仅打印中值和最小值和最大值,以打印3点而不是全部5点?

我可以创建一个功能,并选择位数我想

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

,并使用fun.y= quantile它会打印出我想要什么,但我怎么在stat_summary呼叫直接纳入fun.y?

谢谢。

+0

只要把在'现在quantile'是函数:'fun.y =函数(x)的位数(X)[C(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)