2017-09-18 9 views
1

2つのレベルでグループ化されたボックスプロット(好ましくはその上部または下部に)にサンプルサイズを追加しようとしています。 facet_grid()関数を使ってパネルプロットを作成しました。私は、サンプルサイズを追加するためにannotate()関数を使用しようとしましたが、2番目のパネルの値が繰り返されたため、これは機能しませんでした。これを行う簡単な方法はありますか?パネルにサンプルサイズを追加するボックスプロットの図

head(FeatherData, n=10) 
    Location Status FeatherD    Species  ID 
## 1  TX Resident -27.41495   Carolina wren CARW (32) 
## 2  TX Resident -29.17626   Carolina wren CARW (32) 
## 3  TX Resident -31.08070   Carolina wren CARW (32) 
## 4  TX Migrant -169.19579 Yellow-rumped warbler YRWA (28) 
## 5  TX Migrant -170.42079 Yellow-rumped warbler YRWA (28) 
## 6  TX Migrant -158.66925 Yellow-rumped warbler YRWA (28) 
## 7  TX Migrant -165.55278 Yellow-rumped warbler YRWA (28) 
## 8  TX Migrant -170.43374 Yellow-rumped warbler YRWA (28) 
## 9  TX Migrant -170.21801 Yellow-rumped warbler YRWA (28) 
## 10  TX Migrant -184.45871 Yellow-rumped warbler YRWA (28) 


ggplot(FeatherData, aes(x = Location, y = FeatherD)) + 
    geom_boxplot(alpha = 0.7, fill='#A4A4A4') + 
    scale_y_continuous() + 
    scale_x_discrete(name = "Location") + 
    theme_bw() + 
    theme(plot.title = element_text(size = 20, family = "Times", face = 
"bold"), 
     text = element_text(size = 20, family = "Times"), 
     axis.title = element_text(face="bold"), 
     axis.text.x=element_text(size = 15)) + 
    ylab(expression(Feather~delta^2~H["f"]~"‰")) + 
    facet_grid(. ~ Status) 

enter image description here

+0

あなたのデータの例を投稿してください( 'head(FeatherData)')? – PoGibas

+0

追加された例だけでなく、現在のボックスプロット図が追加されました! – AMaldonado

答えて

0

タスクのこの種を行うには複数の方法があります。他の方法を

library(dplyr) 
library(ggplot2) 

cw_summary <- ChickWeight %>% 
    group_by(Diet) %>% 
    tally() 

cw_summary 
# A tibble: 4 x 2 
    Diet  n 
    <fctr> <int> 
1  1 220 
2  2 120 
3  3 120 
4  4 118 
ggplot(ChickWeight, aes(Diet, weight)) + 
    geom_boxplot() + 
    facet_grid(~Diet) + 
    geom_text(data = cw_summary, 
      aes(Diet, Inf, label = n), vjust = 1) 

enter image description here

:最も柔軟な方法は、個別のデータフレームとしてプロットコール外で、あなたの統計量を計算し、独自のレイヤとしてそれを使用することです組み込みのサマリー関数を使用することですが、それは間違っている可能性があります。ここでは例です:

ggplot(ChickWeight, aes(Diet, weight)) + 
    geom_boxplot() + 
    stat_summary(fun.y = median, fun.ymax = length, 
       geom = "text", aes(label = ..ymax..), vjust = -1) + 
    facet_grid(~Diet) 

enter image description here

ここで私は、yの値の中央値で概要を配置するfun.yを使用し、..ymaxと呼ばれる内部変数を計算するためにfun.ymaxを使用..と関数length(これは単に観測数をカウントします)。

+0

ありがとう@Brian!あなたの最初の提案は美しく機能しました! – AMaldonado

関連する問題