在ggplot2 R 3.0.3中添加条形标签

时间:2014-03-28 17:14:41

标签: r ggplot2

我正在尝试生成一个geom_bar()图表的计数标签。数据格式为Factor w/ 2 levels "0","1"

现在我有以下代码但是找不到'count'的错误。

以下是我最近尝试的代码:

ggplot(mb,
       aes(x = Intervention_grp,
           y = ..count..,)) +
  geom_bar(aes(fill = Intervention_grp),
           alpha = (1 - 0.618)) +
  geom_text(aes(label=Intervention_grp),
            vjust = -0.2)
Error in eval(expr, envir, enclos) : object 'count' not found

我在R Graphics Cookbook中看到以下代码:

ggplot(cabbage_exp, aes(x=ineraction(Date, Cultivar), y=Weight)) +
    geom_bar(stat="identity") +
    geom_text(aes(label=Weight), vjust = -0.2)

所以我尝试了类似的格式,只是没有使用交互

ggplot(mb,
       aes(x = Intervention_grp,
           y = Intervention_grp)) + 
  geom_bar(stat = "identity") +
  geom_text(aes(label=sum(as.numeric(Intervention_grp))),
            vjust = -0.2)

我的结果是两个条形图用于组0,一个用于组1,标记为1519,数据集中没有那么多观察结果。

如何使用计数正确获取标签?

当我执行以下操作时:

ggplot(mb,
       aes(x = Intervention_grp,
           y = ..count..,)) +
  geom_bar()

我得到一个合适的条形图,在y轴上有正确的计数,我只想将它们放在条形图上。

谢谢,

1 个答案:

答案 0 :(得分:1)

您可以先添加Count列。这是plyr包:

mb <- merge(mb, ddply(mb, .(Intervention_grp), summarise, Count=length(Intervention_grp), by = 'Intervention_grp')

然后你可以使用

geom_text(aes(label = Count, y = Count), vjust = -0.25)

实施例

iris2 <- iris[sample(seq_len(150), 50), ]
iris2 <- merge(iris2, ddply(iris2, .(Species), summarise, Count = length(Species)), by = 'Species')
ggplot(iris2, aes(x = Species)) + geom_bar() + geom_text(aes(label = Count, y = Count), vjust = -0.25)

enter image description here