ggplot2 geom_text - '动态'将标签放在条形图上

时间:2013-11-22 04:16:01

标签: r ggplot2 label geom-bar

我知道这将是一个不可思议的简单问题。我使用条形图按月显示平均天数,使用以下示例:

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..)))

现在我的标签显示了数量&amp;出现在哪里我指定y

我想:

  • 在标签顶部放置标签。
  • 显示平均值,而不是计数。

我已经非常彻底地 - 并且没有成功 - 尝试了SO&amp; S上的大多数其他解决方案。别处。

1 个答案:

答案 0 :(得分:2)

得到它:

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))

我意识到其他地方的代码几乎完全相同。我的错误在于将round的{​​{1}}放在正确的右括号之外 - 从而将我的所有标签移到0轴上的0 ... DUH!