ggplot中geom_point按性别设色且图例不含geom_line色系的实现方法
要实现散点按性别区分粉蓝、同时图例不包含折线的配色,按以下步骤修改代码即可:
- 保留
geom_line的show.legend = FALSE参数,确保按参与者ID分配的折线配色完全不会进入图例 - 在
geom_point的美学映射中加入性别变量的颜色映射(假设你的数据集里性别列名为Sex,可替换为实际列名) - 通过
scale_color_manual手动指定性别对应的粉色、蓝色,必要时可覆写图例样式,彻底排除折线元素混入
修改后完整代码如下:
ggplot(Signs, aes(x = HrsAfterFirstScan, y = ContusionVol)) + geom_line(aes(x = HrsAfterFirstScan, y = ContusionVol, color = ParticipantID), show.legend = FALSE) + # 新增color=Sex映射,关联性别和点的颜色 geom_point(aes(x = HrsAfter, y = IPH, shape = Sign, color = Sex)) + # 手动设置性别对应配色,覆写图例样式避免显示折线 scale_color_manual( values = c("女" = "pink", "男" = "blue"), name = "性别", guide = guide_legend(override.aes = list(linetype = NA)) ) + ylab("Subdural Hemorrhage Volume") + theme_bw() + coord_cartesian(xlim = c(0, 150))
如果你的性别变量取值为英文(如Female/Male),替换scale_color_manual里values对应的键名即可。
内容的提问来源于stack exchange,提问作者Rachel Mona
相关产品推荐
相关产品推荐

