在 geom_boxplot 中添加标准错误作为阴影区域而不是错误栏

Add standard error as shaded area instead of errorbars in 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")

我在 stat_summary 中使用 geom_errorbar 做到了这一点,并尝试用 geom_ribbon 替换 geom_errorbar,正如我在网络上的其他一些示例中看到的那样,但是它不起作用。

有点像这个,但错误是阴影区域而不是错误条(这让人看起来有点混乱)

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

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)