2016-06-24 30 views
4

私はggplot2を使ってサイドバイサイドボックスを作成しました。ggplot2のboxplotに

p <- ggplot(mtcars, aes(x=factor(cyl), y=mpg)) 
p + geom_boxplot(aes(fill=factor(cyl))) 

私は、最小、最大、第1四分位、中央値および第3四分位で注釈を付けたいと思います。私はgeom_text()がそうすることができると知っており、fivenum()が有用かもしれません。しかし、私は正確に私ができることを把握することはできません!これらの値は私のプロットに表示する必要があります。

答えて

2

一つの方法は、単にあなたが必要data.frameを作り、geom_textまたはgeom_labelにそれを渡すことです:私は考えることができる

library(dplyr) 

cyl_fivenum <- mtcars %>% 
    group_by(cyl) %>% 
    summarise(five = list(fivenum(mpg))) %>% 
    tidyr::unnest() 

ggplot(mtcars, aes(x=factor(cyl), y=mpg)) + 
    geom_boxplot(aes(fill=factor(cyl))) + 
    geom_text(data = cyl_fivenum, 
       aes(x = factor(cyl), y = five, label = five), 
       nudge_x = .5) 

boxplot with labels

+0

簡単な方法で – Paul

7

最も簡潔な方法は、stat_summaryを使用することです。私も色の審美的にラベルをマッピングしてきましたが、あなたが希望する場合は、当然のことながら、単一色にラベルを設定することができます。

ggplot(mtcars, aes(x=factor(cyl), y=mpg, fill=factor(cyl))) + 
    geom_boxplot(width=0.6) + 
    stat_summary(geom="text", fun.y=quantile, 
       aes(label=sprintf("%1.1f", ..y..), color=factor(cyl)), 
       position=position_nudge(x=0.33), size=3.5) + 
    theme_bw() 

のコードでは、我々が取得する要約機能としてquantileを使用する上でラベル値。 ..y..は、quantile関数の出力を参照します(一般に、..*..は、ggplotで計算された値を使用するためのggplot構造です)。

enter image description here

+0

ニースの答えを示してくれてありがとう。些細な違いはありますが、ggplotが同じfivenumの要約を使用しているかどうかはわかりません。違いがあるかもしれません。 – user20650

+0

@ user20650(あなたはもっと独特なSOの名前を自分自身で与えたのではないでしょうか?) 'fun.y'で与えられた関数をgpplotで呼び出すのではないので、' fivenum'関数を '統計? – eipi10

+1

今、私はあなたの要点を見ています。 geom_boxplotはquantileを使用していますが、fivenumは別のアルゴリズムを使用しています。私はquantileを使用するための私の答えを更新しました。 – eipi10

関連する問題