以下是将“克拉大于3”的计数插入条形图中的步骤。我将问题分解为多个步骤。第一步:新变量标识“克拉大于3”。第二步:获取每种颜色和切割的钻石数量以及每种颜色和切割的“克拉大于3”数量的汇总表。我使用了plyr包中的ddply()函数。第三步:绘制不带标签的条形图。第四步:向汇总表添加一个变量,给出标签的y位置。第五步:在图表中添加geom_text层。geom_text()需要美学标签(在本例中,“克拉大于3”的计数),y位置(在前一步中计算),以及x位置(颜色)。
library(ggplot2)
library(plyr)
diamonds$caratGT3 = ifelse(diamonds$carat > 3, 1, 0)
diamonds2 = ddply(diamonds, .(color, cut), summarize, CountGT3 = sum(caratGT3))
diamonds2$Count = count(diamonds, .(color, cut))[,3]
diamonds2
p = ggplot() + geom_bar(data = diamonds, aes(x=factor(color),fill=factor(cut)))
diamonds2 <- ddply(diamonds2,.(color),
function(x) {
x$cfreq <- cumsum(x$Count)
x$pos <- (c(0,x$cfreq[-nrow(x)]) + x$cfreq) / 2
x
})
(p <- p + geom_text(data = diamonds2,
aes(x = factor(color), y = pos, label = CountGT3),
size = 3, colour = "black", face = "bold"))