2013-11-22 85 views
0

我有我所知道的將是一個不可能的簡單問題。我使用的是條形圖,顯示天的平均每月使用下面的例子:ggplot2 geom_text - '動態'在條形圖上放置標籤

dat <- structure(list(Days = c("217.00", "120.00", "180.00", "183.00", 
    "187.00", "192.00"), Amt = c("1,786.84", "1,996.53", 
    "1,943.23", "321.30", "2,957.03", "1,124.32"), Month = c(201309L, 
    201309L, 201309L, 201310L, 201309L, 201309L), Vendor = c("Comp A", 
    "Comp A", "Comp A", "Comp A", "Comp A", 
    "Comp A"), Type = c("Full", "Full", 
    "Self", "Self", "Self", "Self" 
    ), ProjectName = c("Rpt 8", 
    "Rpt 8", "Rpt 8", 
    "Rpt 8", "Rpt 8", 
    "Rpt 8")), .Names = c("Days", 
    "Amt", "Month", "Vendor", "Type", "ProjectName" 
    ), row.names = c("558", "561", "860", "1157", "1179", "1221"), class = 
    "data.frame") 

ggplot(dat, aes(x=as.character(Month),y=as.numeric(Days),fill=Type))+ 
stat_summary(fun.y='mean', geom = 'bar')+ 
ggtitle('Rpt 8')+ 
xlab('Month')+ 
ylab('Average Days')+ 
geom_text(stat='bin',aes(y=100, label=paste('Avg:\n',..count..))) 

現在我的標籤顯示顯示出來過的位置我指定y數&。

我想:在酒吧的頂部

  • 地方的標籤。
  • 顯示平均值,而不是計數值。

我已經非常徹底 - 並沒有成功 - 嘗試了其他地方的其他解決方案中的大多數其他解決方案。

回答

1

剛拿到它:

means<-ddply(dat,.(Vendor,Type,Month), summarise, avg=mean(as.numeric(Days))) 
ggplot(dat, aes(x=as.character(Month),y=as.numeric(Days),fill=Type))+ 
stat_summary(fun.y='mean', geom = 'bar')+ 
geom_text(data = means, stat='identity', 
      aes(y=avg+7, label=round(avg,0),group=Type)) 

我知道有代碼幾乎相同,這在其他地方坐。我的錯誤是將round0置於正確的右括號之外 - 因此將我的所有標籤移動到0,x軸...... DUH!

相關問題