在geom_boxplot中将标准误差添加为阴影区域而不是误差线

Add standard error as shaded area instead of errorbars in geom_boxplot

提问人:Antonio Manco 提问时间:9/26/2019 最后编辑:Antonio Manco 更新时间:9/28/2019 访问量:2859

问:

我有我的,我在箱形图上添加了一条线的平均值。我想添加标准错误,但我不想要错误栏boxplotstat_summary

基本上,我想将标准错误添加为阴影区域,因为您可以使用 .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")

我使用 in 做了它,并尝试用 替换 ,正如我在网络上的其他一些例子中看到的那样,但它不起作用。geom_errorbarstat_summarygeom_errorbargeom_ribbon

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

enter image description here

r ggplot2 箱线图 误差栏

评论

0赞 camille 9/27/2019
您能否添加一个示例来说明您想要的视觉对象类型?我不太想像它
0赞 Antonio Manco 9/27/2019
我回复了一张图片,并在帖子中进行了解释。

答:

2赞 camille 9/28/2019 #1

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

评论

0赞 Antonio Manco 9/28/2019
谢谢卡米尔。我认为这很容易解释。我在箱形图上添加了一条线,表示均值(通常箱线图将中位数表示为中心趋势的指标)。我还想表示标准误差,但用阴影区域而不是误差线。我想要这样的台词:images.app.goo.gl/Lb9AhtUeAnrmpdsy6
0赞 Antonio Manco 9/28/2019
特别的是,我之前没有计算平均值和 se,而且我的数据框中没有这些数据。为了更快(我想)并且不那么费力地编写代码。所以我不能使用 geom_line 和 geom_ribbon,我尝试使用 stat_summary 函数来计算这些统计数据以绘制它们。该函数可以很好地计算这些统计信息,但仅将误差添加为误差线,而不是阴影区域。也许我错了,但我不知道怎么做。我希望我更清楚。
0赞 camille 9/28/2019
@AntonioManco这样的色带没有多大意义,因为 x 轴是离散的,而不是连续的,所以它可能会产生误导
1赞 Antonio Manco 9/28/2019
我使用 PlantGrowth 数据集只是为了提供一个简单的日期集来重现我的地块,因为我的数据集更大,共享起来更复杂。我有一个连续的 x 轴,一天中的小时数。
0赞 Antonio Manco 10/2/2019
哎呀。现在就像我想要它用于我的连续 x 轴的情节一样!谢谢@camille!