ggplot2中自定义箱线图边框颜色及抖动点颜色的方法
解决分组箱线图边框与抖动点颜色自定义问题
要实现分组箱线图边框统一为黑色,同时自定义抖动点的分组颜色,只需调整ggplot2的映射逻辑,单独控制各图层的颜色属性即可,修改后的代码及关键说明如下:
修改后完整代码
Line <- c("A", "A", "B", "B") FC <- c(2, -1, 3, -0.5, 2.1, 0, 2.2, -2, 1.8, -0.1, 2, -1) TM <- c("control", "exp", "control", "exp", "control", "exp", "control", "exp", "control", "exp", "control", "exp") df1 <- data.frame(Line, FC, TM) library(ggplot2) # 自定义抖动点的分组颜色 point_palette <- c("#EF9F26", "#082F6D") df1 %>% ggplot(aes(x = Line, y = FC)) + # 全局映射移除color,避免影响箱线图边框 # 箱线图误差线设为黑色 stat_boxplot(geom = 'errorbar', width = 0.15, position = position_dodge(width = 0.6), color = "black") + # 箱线图边框设为黑色,隐藏默认离群点 geom_boxplot(outlier.shape = NA, width = 0.4, position = position_dodge(width = 0.6), color = "black") + # 抖动点按TM分组设置颜色,保留分组偏移与抖动效果 geom_point(aes(color = TM), position = position_jitterdodge(dodge.width = 0.6, jitter.width = 0.1), alpha = 0.4) + theme_classic() + # 绑定抖动点的自定义颜色 scale_color_manual(values = point_palette) + scale_y_continuous(limits = c(-3, 3), breaks = c(-3, -2, -1, 0, 1, 2, 3)) + theme(axis.ticks.length = unit(-0.1, "cm"))
关键修改说明
- 全局映射调整:移除全局
aes中的color=TM,避免箱线图和误差线默认继承分组颜色,这样可以单独给它们设置固定颜色。 - 箱线图边框与误差线:在
stat_boxplot和geom_boxplot中直接指定color="black",强制将边框和误差线设为统一黑色,不受分组影响。 - 抖动点颜色控制:在
geom_point中单独添加aes(color=TM),让抖动点仍按TM分组显示,配合scale_color_manual自定义分组颜色。
如果需要给箱线图添加填充色,可在geom_boxplot中添加fill=TM,再用scale_fill_manual指定填充色值即可。
内容的提问来源于stack exchange,提问作者pleasehelp
相关产品推荐
相关产品推荐

