2016-07-15 66 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)