`ggplot2`: label values of barplot that uses `fun.y=“mean”` of `stat_summary`

前端 未结 2 1718
半阙折子戏
半阙折子戏 2020-12-16 01:19

If I use ggplot2\'s stat_summary() to make a barplot of the average number of miles per gallon for 3-, 4-, and 5-geared cars, for example, how can

相关标签:
2条回答
  • 2020-12-16 02:02

    You should use the internal variable ..y.. to get the computed mean.

    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
    

    but probably it is better to aggregate beforehand.

    0 讨论(0)
  • 2020-12-16 02:05

    I'd simply precompute the statistics, and build the plot afterwards:

    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

    0 讨论(0)
提交回复
热议问题