在ggplot双因素箱线图中为6个分组添加均值线的问题
解决ggplot分组均值线问题
嘿,我懂你的困扰——你想给Factor1和Factor2每个组合的箱线图都加上单独的均值线,但现在的stat_summary只画出了Factor1每个水平的整体均值,完全没区分Factor2的不同分组,对吧?
问题根源
默认情况下,stat_summary会跟着你aes里的x轴变量(也就是Factor1)来分组计算统计量,所以它只会算出每个Factor1水平下所有数据的均值,而不会拆分Factor2的不同类别。
解决方案
你只需要在stat_summary的aes里加上group = interaction(Factor1, Factor2),明确告诉ggplot要按两个因子的组合来分组计算均值。这样每个箱线图(也就是每个Factor1+Factor2的组合)都会有自己的均值线了。
修改后的完整代码
ggplot(test, aes(Factor1, YVar)) + geom_boxplot(aes(colour=Factor2)) + labs(x="Factor 1", y="Y Var") + guides(color=guide_legend("Factor 2")) + stat_summary( fun=mean, # 新版本ggplot2用fun替代了旧版的fun.y geom="errorbar", aes(ymax=..y.., ymin=..y.., group = interaction(Factor1, Factor2)), width=0.75, linetype="dashed", size=1, color="black" )
小提示
如果你的ggplot2版本比较新,记得把fun.y换成fun——旧的fun.y参数已经被弃用啦。用mtcars数据集模拟你的场景跑一遍代码,就能看到每个气缸数+变速箱类型的箱线图上都有对应的均值虚线了。
内容的提问来源于stack exchange,提问作者Mircea_cel_Batran
相关产品推荐
相关产品推荐

