以下は、「3より大きいカラット」のカウントをバーセグメントに挿入します。私は問題をいくつかのステップに分けた。ステップ1:「3より大きいカラット」を識別する新しい変数。ステップ2:各色と切り取りのダイヤモンドと、各色と切り口の "3より大きいカラット"の数のサマリーテーブルを取得する。私はplyrパッケージからddply()関数を使用した。ステップ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"))