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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:55:28