`ggplot2`:barplot的标签值,使用`fun.y =“表示```stat_summary`

时间:2013-11-22 08:09:47

标签: r ggplot2

例如,如果我使用ggplot2的{​​{1}}来制作3加仑,4加仑和5加仑汽车平均每加仑行驶里程数的条形图,我该如何标记每个柱子的平均值为mpg?

stat_summary()

我知道您通常可以使用library(ggplot2) CarPlot <- ggplot() + stat_summary(data= mtcars, aes(x = factor(gear), y = mpg, fill = factor(gear) ), fun.y="mean", geom="bar" ) CarPlot ,但我无法弄清楚要做什么才能从geom_text()获得平均值。

2 个答案:

答案 0 :(得分:15)

您应该使用内部变量..y..来获取计算出的平均值。

enter image description here

library(ggplot2)
CarPlot <- ggplot(data= mtcars) +
               aes(x = factor(gear),
                   y = mpg)+
      stat_summary(aes(fill = factor(gear)), fun.y=mean, geom="bar")+
      stat_summary(aes(label=round(..y..,2)), fun.y=mean, geom="text", size=6,
             vjust = -0.5)
CarPlot

但事先聚合可能更好。

答案 1 :(得分:5)

我只是预先计算统计数据,然后建立情节:

library(plyr)
library(ggplot2)
dat = ddply(mtcars, .(gear), summarise, mean_mpg = mean(mpg))
dat = within(dat, {
    gear = factor(gear)
    mean_mpg_string = sprintf('%0.1f', mean_mpg)
  })
ggplot(dat, aes(x = gear, y = mean_mpg)) + 
    geom_bar(aes(fill = gear), stat = "identity") + 
    geom_text(aes(label = mean_mpg_string), vjust = -0.5)

enter image description here