How to add a number of observations per group and use group mean in ggplot2 boxplot?

后端 未结 3 1298
余生分开走
余生分开走 2020-11-28 09:50

I am doing a basic boxplot where y=age and x=Patient groups

age <- ggplot(data, aes(factor(group2), age))  + ylim(15, 80) 
age         


        
3条回答
  •  一个人的身影
    2020-11-28 10:35

    Is this anything like what you're after? With stat_summary, as requested:

    # function for number of observations 
    give.n <- function(x){
      return(c(y = median(x)*1.05, label = length(x))) 
      # experiment with the multiplier to find the perfect position
    }
    
    # function for mean labels
    mean.n <- function(x){
      return(c(y = median(x)*0.97, label = round(mean(x),2))) 
      # experiment with the multiplier to find the perfect position
    }
    
    # plot
    ggplot(mtcars, aes(factor(cyl), mpg, label=rownames(mtcars))) +
      geom_boxplot(fill = "grey80", colour = "#3366FF") +
      stat_summary(fun.data = give.n, geom = "text", fun.y = median) +
      stat_summary(fun.data = mean.n, geom = "text", fun.y = mean, colour = "red")
    

    Black number is number of observations, red number is mean value. joran's answer shows you how to put the numbers at the top of the boxes enter image description here

    hat-tip: https://stackoverflow.com/a/3483657/1036500

提交回复
热议问题