首页 > 解决方案 > 如何将第二个汇总统计数据帧中的误差线绘制到我绘制的原始数据 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()电话打回来时,情节就没有问题了。

下图是该图 4 个方面中的 2 个,但没有数据点云上的置信区间。如何获得每个点云的置信区间? 在此处输入图像描述

标签: rggplot2

解决方案


如果没有可重现的数据示例,我无法确定我的解决方案是否适用于您的特定数据集。此外,我认为你打错了,因为据我所知,geom_error不存在(geom_errorbar是的)。

但是,如果您正在寻找将置信区间绘制到每个点云上,您可以使用geom_pointrange. 这是使用iris数据集的示例。

iris1)从数据集中生成统计摘要

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 可重现示例


推荐阅读