r - 如何制作两级箱线图,并在 R 中重新定义 mustache ?

标签 r ggplot2 boxplot

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

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 轴上同一位置的两个不同箱线图将绘制在彼此的顶部,而不是像调用 geom_boxplot() 时那样彼此相邻。有更好的方法吗?

最佳答案

只需将 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")

关于r - 如何制作两级箱线图,并在 R 中重新定义 mustache ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18328612/

相关文章:

statistics - 如何在 gnuplot 中生成具有可变框宽的盒须图?

octave - 如何使用 Octave 绘制多个箱线图?

python - 带 Pandas 的箱线图、groupby、子图、计算/描述性统计、聚合

r - 如何抓取网页内容然后计算 R 中单词的频率?

r - 创建变量数量不等的计数表

r - 使用位置 ="dodge"时,ggplot 未正确分组条形图

r - GTrendsR + ggplot2?

r - 为 facet_grid/facet_wrap 图的每一行分配唯一的宽度

r - 如何在 R 中计算属于同一数据帧中处理组合的列中的记录数(即行、单元格)?

r - 将 vline 添加到 geom_density 和均值 R 的阴影置信区间