以下は、「3より大きいカラット」のカウントをバーセグメントに挿入します。私は問題をいくつかのステップに分解しました。ステップ1:「3より大きいカラット」を識別する新しい変数。ステップ2:カウントの要約表を取得します-各色とカットのダイヤモンド、および各色とカットの「3より大きいカラット」。plyrパッケージのddply()関数を使用しました。ステップ3:棒グラフラベルなしでプロットします。ステップ4:ラベルのy位置を指定する変数をサマリーテーブルに追加します。ステップ5:geom_textレイヤーをプロットに追加します。geom_textのデータフレームはサマリーテーブルです。geom_text()には次の美学が必要です。ラベル(この場合、「3'より大きいカラット」のカウント)、y位置(前のステップで計算)、およびx位置(色)。
library(ggplot2)
library(plyr)
# Step 1
diamonds$caratGT3 = ifelse(diamonds$carat > 3, 1, 0)
# Step 2
diamonds2 = ddply(diamonds, .(color, cut), summarize, CountGT3 = sum(caratGT3))
diamonds2$Count = count(diamonds, .(color, cut))[,3]
diamonds2
# Step 3
p = ggplot() + geom_bar(data = diamonds, aes(x=factor(color),fill=factor(cut)))
# Step 4
diamonds2 <- ddply(diamonds2,.(color),
function(x) {
x$cfreq <- cumsum(x$Count)
x$pos <- (c(0,x$cfreq[-nrow(x)]) + x$cfreq) / 2
x
})
# Step 5
(p <- p + geom_text(data = diamonds2,
aes(x = factor(color), y = pos, label = CountGT3),
size = 3, colour = "black", face = "bold"))
