2014-03-28 84 views
0

我正在嘗試生成一個計數標籤geom_bar()圖表。數據的格式爲Factor w/ 2 levels "0","1"在ggplot2中添加條形標籤R 3.0.3

現在我有下面的代碼,但得到的錯誤'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圖形菜譜看到下面的代碼:

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

見'sjPlot'包和'SJP。 frq'功能。 – Maciej

回答

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

+0

謝謝,這很好。我看到類似的帖子,但嘗試做'install.packages(「ddply」)',因爲我使用3.0.3,並沒有意識到plyr會給我必要的功能。 –

+0

'plyr'和'dplyr'是包。 'ddply'是'plyr'包中的一個函數 – rawr