15

stat_summaryプロットに変数のn = x場所を示すラベルを付けるにはどうすればよいですか? x目的の出力の例を次に示します。

ここに画像の説明を入力

このかなり非効率的なコードを使用して、上記のプロットを作成できます。

nlabels <- sapply(1:length(unique(mtcars$cyl)), function(i) as.vector(t(as.data.frame(table(mtcars$cyl))[,2][[i]])))
ggplot(mtcars, aes(factor(cyl), mpg, label=rownames(mtcars))) +
  geom_boxplot(fill = "grey80", colour = "#3366FF") + 
  geom_text(aes(x = 1, y = median(mtcars$mpg[mtcars$cyl==sort(unique(mtcars$cyl))[1]]), label = paste0("n = ",nlabels[[1]]) )) +
  geom_text(aes(x = 2, y = median(mtcars$mpg[mtcars$cyl==sort(unique(mtcars$cyl))[2]]), label = paste0("n = ",nlabels[[2]]) )) +
  geom_text(aes(x = 3, y = median(mtcars$mpg[mtcars$cyl==sort(unique(mtcars$cyl))[3]]), label = paste0("n = ",nlabels[[3]]) )) 

これは、この質問のフォローアップです:グループごとに多数の観測値を追加し、ggplot2 boxplot でグループ平均を使用する方法は? 観測数を計算して表示するために使用できますが、出力stat_summaryに含める方法を見つけることができませんでした。この種のラベル付けを行うには が最も効率的な方法のようですが、他の方法も歓迎します。n =stat_summarystat_summary

4

2 に答える 2

10

のほとんどRはベクトル化されているため、それを活用できます。

nlabels <- table(mtcars$cyl)

#  To create the median labels, you can use by
meds <- c(by(mtcars$mpg, mtcars$cyl, median))

ggplot(mtcars, aes(factor(cyl), mpg, label=rownames(mtcars))) +
   geom_boxplot(fill = "grey80", colour = "#3366FF") + 
   geom_text(data = data.frame(), aes(x = names(meds) , y = meds, 
            label = paste("n =", nlabels)))

箱ひげ図


についてnlables

ステートメントの代わりに、sapply次を使用できます。

nlabels <- table(mtcars$cyl)

現在のコードが上記を取得し、変換し、転置し、各行を反復処理して値を 1 つずつ取得し、それらを 1 つのベクトルにまとめていることに注意してください。

次元のない整数ベクトルとして本当にそれらが必要な場合は、使用しますc()

nlabels <- c(table(mtcars$cyl))   

もちろん、これでさえ上記を達成する必要はありません。

于 2013-03-30T16:36:53.743 に答える