r - 如何将第二个汇总统计数据帧中的误差线绘制到我绘制的原始数据 ggplot2 上?
问题描述
就原始数据而言,我有我喜欢的情节。基本上我想要一个条形图之类的东西,但你可以看到原始数据点及其置信区间,而不是填充条。现在,我的长格式数据框 ( dat
) 中的所有绘图都带有原始值。我在单独的数据框中为每个点云提供了汇总统计信息以及高低置信区间 ( sum_stats
)
原始情节调用:
dat %>% subset(y_var > 0) %>%
ggplot(aes(x = x_var, y = y_var, group = Treatment, col = Treatment, shape = Treatment)) +
geom_point(position = position_jitterdodge(jitter.width = 1.5, dodge.width = 1)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
facet_wrap(~comp_group)
当我尝试添加geom_error(data = sum_stats, aes(x=x_var, ymin=ci_low, ymax=ci_high)
时,出现错误
FUN(X[[i]], ...) 中的错误:找不到对象“y_var”
当我把geom_error()
电话打回来时,情节就没有问题了。
解决方案
如果没有可重现的数据示例,我无法确定我的解决方案是否适用于您的特定数据集。此外,我认为你打错了,因为据我所知,geom_error
不存在(geom_errorbar
是的)。
但是,如果您正在寻找将置信区间绘制到每个点云上,您可以使用geom_pointrange
. 这是使用iris
数据集的示例。
iris
1)从数据集中生成统计摘要
library(dplyr)
iris_stat <- iris %>% group_by(Species) %>%
summarise(Mean = mean(Sepal.Length), SD = sd(Sepal.Length)) %>%
mutate(Upper = Mean+SD, Lower = Mean-SD)
# A tibble: 3 x 5
Species Mean SD Upper Lower
<fct> <dbl> <dbl> <dbl> <dbl>
1 setosa 5.01 0.352 5.36 4.65
2 versicolor 5.94 0.516 6.45 5.42
3 virginica 6.59 0.636 7.22 5.95
2) 然后,我们可以使用 绘制点云geom_jitter
和使用 置信区间geom_pointrange
:
library(ggplot2)
ggplot() +
geom_jitter(data = iris, aes(x = Species, y = Sepal.Length, color = Species, shape = Species),width = 0.2, size = 2)+
geom_pointrange(data = iris_stat, aes(x = Species, y = Mean, ymin = Lower, ymax = Upper))
是你要找的吗?
如果没有,请考虑提供您的数据的可重现示例(请参阅:如何制作出色的 R 可重现示例)
推荐阅读
- javascript - 尝试使用 state.go 以角度加载重定向到 jsp
- php - 查询表中的变量不起作用
- javascript - Outlook js 加载项是否可以使用 Web 套接字或类似方法从外部服务器接收推送通知?
- inheritance - 如何通过扩展正在使用的类来扩展模块?
- c# - UWP/C#:如果在 WebView 中打开某个 html 文件,则显示后退按钮
- jquery - 当 ID 有特殊字符时,使用 href 滚动到 Element
- sql - 将 postgresql 表转储到 XML 文件
- typescript - Typescript - 扩展自身的通用类型
- javascript - 有没有办法知道一个窗口是否在不同的浏览器中
- python - Keras 中的百分比图像预测