将标准错误添加为阴影区域,而不是geom_boxplot中的错误栏

时间:2019-09-26 15:37:26

标签: r ggplot2 boxplot errorbar

我有自己的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_errorbar中使用stat_summary进行了此操作,并尝试将geom_errorbar替换为geom_ribbon,正如我在网络上的其他示例中所看到的那样,但是它没有工作。

类似这样的东西,但是错误区域为阴影区域而不是错误条(这使它看起来有些混乱)

enter image description here

1 个答案:

答案 0 :(得分:2)

分层这么多的几何图形变得很难阅读,但是这是带有一些选项的简化版本。除了将内容精简一下以查看正在编辑的内容外,我还添加了一个图块作为摘要几何图形; 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)