【问题标题】:How to add the mean line to grouped density plot in R?如何将平均线添加到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")

但是,根据输出图

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

【问题讨论】:

    标签: r ggplot2 mean density-plot


    【解决方案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 你在上面的问题中指定的吗?而且,该错误发生在哪里?
    • 你帮了我很多!我真的很累。
    猜你喜欢
    • 2016-11-30
    • 2021-08-09
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2021-01-31
    • 2021-02-20
    相关资源
    最近更新 更多