You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言ggplot2分组分面密度图中添加正确的分组均值线?

问题原因

你当前用于绘制均值线的聚合数据集mu仅按Modality单个字段分组计算均值,缺少分面依赖的分组字段Species,ggplot无法将均值线匹配到对应分面,因此会把所有Modality的均值线渲染到每一个分面中。

解决方法

调整均值聚合的分组维度,同时按Species和Modality两个字段分组计算均值,让每个均值结果同时关联分面和分组,ggplot会自动匹配分面渲染对应均值线。

修正后完整代码
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)
# 仅修改这一行,增加Species作为分组维度
mu <- ddply(data, c("Species", "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")

内容的提问来源于stack exchange,提问作者Katie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:54:00