首页 文章

如何进行两级箱图,在R中重新定义胡须?

提问于
浏览
2

我想制作一个有两个不同因素的箱线图:

df <- data.frame(f1=factor(rbinom(100, 1, 0.45), label=c("m","w")), 
                  f2=factor(rbinom(100, 1, 0.45), label=c("young","old")),
                  boxthis=rnorm(100))

ggplot(aes(y = boxthis, x = f2, fill = f1), data = df) + geom_boxplot()

我还想根据分位数重新定义胡须:

f <- function(x) {
  r <- quantile(x, probs = c(0.025, 0.25, 0.5, 0.75, 0.975))
  names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
  r
}

ggplot(aes(y = boxthis, x = f2, fill = f1), data = df) + stat_summary(fun.data = f, geom="boxplot")

但是,当使用stat_summary()时,x轴上相同位置的两个不同的boxplot会彼此重叠绘制,而不是像调用geom_boxplot()时那样彼此相邻 . 有一个更好的方法吗?

1 回答

  • 2

    只需将 position="dodge" 添加到 stat_summary() 即可 . 因为 geom_boxplot() position="dodge" 已经是一个默认值,所以你不必写它,但是对于 stat_summary() 你必须自己定义它 .

    ggplot(aes(y = boxthis, x = f2, fill = f1), data = df) + 
      stat_summary(fun.data = f, geom="boxplot",position="dodge")
    

相关问题