我试图在这个盒子图上添加两组男性和女性的平均年龄标签。到目前为止,我只能按组进行,而不是按性别和组进行。
我的数据框:
Age=c(60, 62, 22, 24, 21, 23)
Sex=c("f", "m", "f","f","f","m")
Group=c("Old", "Old", "Young", "Young", "Young", "Young")
aging<-data.frame(Age, Sex, Group)
剧情的命令:
ggplot(data=aging, aes(x=Group, y=Age))+geom_boxplot(aes(fill=Sex))
+geom_text(data =aggregate(Age~Group,aging, mean),
aes(label =round(Age,1), y = Age + 3), size=6)
答案 0 :(得分:10)
为了清楚起见,您应该将汇总数据保存在单独的对象上,并使用position=position_dodge()
选项中的geom_text()
:
aging.sum = aggregate(Age ~ Group + Sex, aging, mean)
ggplot(data=aging, aes(x=Group, y=Age, fill=Sex)) +
geom_boxplot(position=position_dodge(width=0.8)) +
geom_text(data=aging.sum, aes(label=round(Age,1), y = Age + 3),
size=6, position=position_dodge(width=0.8))
使用width
玩,直到您对结果感到满意为止。请注意,我将fill=Sex
放在全局aes
定义中,因此它也适用于文本标签。
修改:在@ user20650上建议将position_dodge()
添加到geom_boxplot()
以便正确对齐。