如何将平均线添加到R中的分组密度图中?

Posted

技术标签:

【中文标题】如何将平均线添加到R中的分组密度图中?【英文标题】:How to add the mean line to grouped density plot in R? 【发布时间】:2022-01-12 03:12:21 【问题描述】:

我正在尝试绘制分组密度图并添加每个图的平均线;这是代码


data <- data.frame(
 Accuracy=abs(rnorm(140)),
Species=c(rep("A.All",20),rep("B. double",60),rep("C.single",60),
          rep("D.All",20),rep("E.double",60),rep("F.single",60)),

Modality=c(rep("All,w0",10),rep("double1,w0",10),rep("double2,w0",10),rep("double3,w0",10),
          rep("single1,w0",10),rep("single2,w0",10),rep("single3,w0",10),
          rep("All,w2",10),rep("double1,w2",10),rep("double2,w2",10),rep("double3,w2",10),
          rep("single1,w2",10),rep("single2,w2",10),rep("single3,w2",10))
)


p<-ggplot(data, aes(x=Accuracy, fill=Modality)) +
 geom_density(alpha=0.4)+
 facet_wrap(. ~ Species) +
 xlab("Accuracy") + ylab("Density")

library(plyr)
mu <- ddply(data, "Modality", summarise, grp.mean=mean(Accuracy))
head(mu)


# Add mean lines
a<-p+geom_vline(data=mu, aes(xintercept=grp.mean, color=Modality),
                linetype="dashed")+ xlab("Accuracy") + ylab("Density")

但是,根据输出图

平均线是绝对不正确的,例如对于左上角的第一张图片,两个密度图应该有两条线,但是创建了几条线并为所有图重复。

【问题讨论】:

【参考方案1】:

您可以同时指定SpeciesModality

plyr

dummy <- ddply(data, c("Species","Modality"), summarise, grp.mean=mean(Accuracy))

ggplot(data, aes(x=Accuracy, fill=Modality)) +
  geom_density(alpha=0.4)+
  facet_wrap(. ~ Species) +
  xlab("Accuracy") + ylab("Density") +
  geom_vline(data = dummy, aes(xintercept = grp.mean, color = Modality))

dplyr

library(dplyr)



dummy <- data %>%
  group_by(Species, Modality) %>%
  summarize(mean = mean(Accuracy))

ggplot(data, aes(x=Accuracy, fill=Modality)) +
  geom_density(alpha=0.4)+
  facet_wrap(. ~ Species) +
  xlab("Accuracy") + ylab("Density") +
  geom_vline(data = dummy, aes(xintercept = mean, color = Modality))

【讨论】:

感谢您的回答!我从您的代码“FUN(X[[i]], ...) 中的错误:找不到对象 'Modality'”中得到这个错误。 @Katie 它确实对我有用。 Modality 列是否在 data 内?该错误发生在哪里? 我运行了与您运行的代码相同的代码,但我不确定为什么会出现此错误。 @Katie 你可以试试data 你在上面的问题中指定的吗?而且,该错误发生在哪里? 你帮了我很多!我真的很累。

以上是关于如何将平均线添加到R中的分组密度图中?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ggplot2 将平均值添加到 R 中的分组箱形图

R中的累积和、移动平均线和SQL“分组依据”等价物

使用ggplot将误差线添加到R中的聚簇条形图中

R语言ggplot2可视化:可视化密度图(Density plot)可视化多个分组的密度图数据点分布在箱图中间添加主标题副标题题注信息

R语言ggplot2可视化:可视化密度图(Density plot)可视化多个分组的密度图数据点分布在箱图中间添加主标题副标题题注信息

将 vline 添加到 geom_density 和平均 R 的阴影置信区间