ファセット内で、そのバケットに分類される観測値のパーセンテージで棒グラフに注釈を付けようとしています。この質問は、この質問と非常に密接に関連してい ます。カテゴリ変数のグラフでカウントの代わりに%を表示しますが、ファセットの導入によりしわが発生します。関連する質問への答えは、テキストgeomを含むstat_binを使用してから、ラベルを次のように作成することです。
stat_bin(geom="text", aes(x = bins,
y = ..count..,
label = paste(round(100*(..count../sum(..count..)),1), "%", sep="")
)
これは、ファセットのないプロットでは問題なく機能します。ただし、ファセットの場合、この合計(..count ..)は、ファセットに関係なく、観測値のコレクション全体を合計しています。以下のプロットは問題を示しています---パネル内でパーセンテージの合計が100%にならないことに注意してください。
上記の図の実際のコードは次のとおりです。
g.invite.distro <- ggplot(data = df.exp) +
geom_bar(aes(x = invite_bins)) +
facet_wrap(~cat1, ncol=3) +
stat_bin(geom="text", aes(x = invite_bins,
y = ..count..,
label = paste(round(100*(..count../sum(..count..)),1), "%", sep="")
),
vjust = -1, size = 3) +
theme_bw() +
scale_y_continuous(limits = c(0, 3000))
更新:リクエストに応じて、問題を再現する小さな例を次に示します。
df <- data.frame(x = c('a', 'a', 'b','b'), f = c('c', 'd','d','d'))
ggplot(data = df) + geom_bar(aes(x = x)) +
stat_bin(geom = "text", aes(
x = x,
y = ..count.., label = ..count../sum(..count..)), vjust = -1) +
facet_wrap(~f)