提问人:Antonio Manco 提问时间:9/26/2019 最后编辑:Antonio Manco 更新时间:9/28/2019 访问量:2859
在geom_boxplot中将标准误差添加为阴影区域而不是误差线
Add standard error as shaded area instead of errorbars in geom_boxplot
问:
我有我的,我在箱形图上添加了一条线的平均值。我想添加标准错误,但我不想要错误栏。boxplot
stat_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_errorbar
stat_summary
geom_errorbar
geom_ribbon
像这样的东西,但错误是阴影区域而不是误差线(这让它看起来有点混乱)
答:
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!
评论