r - 在 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_errorbar
in完成了它stat_summary
,并尝试用 替换geom_errorbar
,geom_ribbon
但它不起作用。
像这样的东西,但错误是阴影区域而不是错误栏(这使它看起来有点混乱)
解决方案
将这么多的几何分层变得难以阅读,但这里有一个简化的版本,有几个选项。除了稍微精简一下以查看我正在编辑的内容之外,我还添加了一个图块作为摘要几何图形;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)
推荐阅读
- php - PHP创建由n个偏移量和最大总和限制的整数值数组
- c++ - 如何将以“\ 0”开头的char *转换为无符号整数?
- php - 错误 21002:使用服务器的 IOS 收据验证
- xaml - 如何使用带有 Button.ImageSource 属性的 Visual State Manager
- python - 为什么 PIP 安装不适用于 PDFMiner?
- ios - 使用 alamofire 在服务主体中发送课程的正确方法是什么
- javascript - forEach 循环中的猫鼬承诺功能不起作用
- azure - 通过 RunBulkEnrollmentOperationAsync 和 Azure IoT 设备预配服务进行速率限制
- node.js - 没有在快递中获取查询字符串的值
- python - 查找大于特定值的值的数量(使用 csv 文件)