在ggplot2 boxplot中添加每组的观察数

Ban*_*you 12 r ggplot2

关注这个问题:如何在ggplot2 boxplot中为每个组添加一些观察并使用组均值?,我想在ggplot boxplot中添加每组的观察次数.但我在aes映射中添加了一种颜色.

现有答案显示了如何在y轴上调整文本位置.我怎样才能调整x轴的文字位置?

这是重现我的问题的最小示例:

library(ggplot2)

give.n <- function(x){
  return(c(y = median(x)*1.05, label = length(x))) 
  # experiment with the multiplier to find the perfect position
}


p <- ggplot(mtcars, aes(factor(vs), mpg, colour = factor(am))) + 
    geom_boxplot() +
    stat_summary(fun.data = give.n, geom = "text", fun.y = median)
p
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

谢谢你的任何建议.

ale*_*han 10

你可以使用position:

p <- ggplot(mtcars, aes(factor(vs), mpg, colour = factor(am))) +  
     geom_boxplot() +
     stat_summary(fun.data = give.n, geom = "text", fun.y = median,
                  position = position_dodge(width = 0.75))
p
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

控制水平轴上定位的width参数position_dodge().0.75是最佳点,看看它如何适用于不同数量的分组:

p2 <- ggplot(mtcars, aes(factor(vs), mpg, colour = factor(cyl))) + 
      geom_boxplot() +
      stat_summary(fun.data = give.n, geom = "text", fun.y = median, 
                   position = position_dodge(width = 0.75))
p2
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述