首页 > 解决方案 > 在 geom_boxplot 中添加标准错误作为阴影区域而不是错误栏

问题描述

我有我的boxplot,我将平均值添加stat_summary为箱线图上的一条线。我想添加标准错误,但我不想要errorbar

基本上,我想将标准错误添加为阴影区域,就像您可以使用geom_ribbon.

我使用PlantGrowth数据集向您简要展示了我尝试过的内容。

library(ggplot2) 

ggplot(PlantGrowth, aes(group, weight))+ 
stat_boxplot( geom='errorbar', linetype=1, width=0.5)+ 
geom_boxplot(fill="yellow4",colour="black",outlier.shape=NA) + 
stat_summary(fun.y=mean, colour="black", geom="line", shape=18, size=1,aes(group=1))+ 
stat_summary(fun.data = mean_se, geom = "errorbar")

正如我在网络上的其他一些示例中看到的那样,我使用geom_errorbarin完成了它stat_summary,并尝试用 替换geom_errorbargeom_ribbon但它不起作用。

像这样的东西,但错误是阴影区域而不是错误栏(这使它看起来有点混乱)

在此处输入图像描述

标签: rggplot2boxploterrorbar

解决方案


将这么多的几何分层变得难以阅读,但这里有一个简化的版本,有几个选项。除了稍微精简一下以查看我正在编辑的内容之外,我还添加了一个图块作为摘要几何图形;tile 与 rect 类似,除了它假定它将以任何 x 值为中心,因此您无需担心所需的 x 轴位置geom_rect。您可以尝试填充颜色和不透明度——我将箱线图设为白色只是为了更好地说明。

library(ggplot2) 

gg <- ggplot(PlantGrowth, aes(x = group, y = weight)) +
  stat_boxplot(geom = "errorbar", width = 0.5) +
  geom_boxplot(fill = "white", outlier.shape = NA, width = 0.7) +
  stat_summary(aes(group = 1), fun.y = mean, geom = "line")

gg +
  stat_summary(fun.data = mean_se, geom = "tile", width = 0.7,
               fill = "pink", alpha = 0.6)

根据您需要功能区的评论,您可以改用与group = 1线条相同的功能区。

gg +
  stat_summary(aes(group = 1), fun.data = mean_se, geom = "ribbon", 
               fill = "pink", alpha = 0.6)

功能区在离散变量中没有多大意义,但这是一个示例,其中包含一些连续组的虚拟数据,其中这种设置变得更加合理(尽管 IMO 仍然难以阅读)。

pg2 <- PlantGrowth
set.seed(123)
pg2$cont_group <- floor(runif(nrow(pg2), 1, 6))

ggplot(pg2, aes(x = cont_group, y = weight, group = cont_group)) +
  stat_boxplot(geom = "errorbar", width = 0.5) +
  geom_boxplot(fill = "white", outlier.shape = NA, width = 0.7) +
  stat_summary(aes(group = 1), fun.y = mean, geom = "line") +
  stat_summary(aes(group = 1), fun.data = mean_se, geom = "ribbon", 
               fill = "pink", alpha = 0.6)


推荐阅读