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

如何在ggpaired配对箱线图中高亮特定样本的点与连线?

实现配对样本中特定样本的高亮效果

一、为什么叠加ggpaired的方法无效

你之前尝试叠加两个ggpaired图的思路行不通,因为每个ggpaired都会生成完整的绘图元素(包括箱线图、坐标轴、背景等),叠加后第二个图会覆盖第一层的内容,而非仅添加高亮的连线和点。

二、基于ggpaired的高亮方案

要实现样本D的连线和点高亮,需要先给数据标记高亮状态,再手动替换ggpaired的连线和点图层:

步骤1:处理数据,标记高亮样本

假设你的数据包含样本ID列(比如Sample),先标记需要高亮的样本D:

# 假设数据结构:Sample, Time1, Time2
# 标记是否为需要高亮的样本D
df$highlight <- ifelse(df$Sample == "D", "Yes", "No")

步骤2:绘制带高亮的配对箱线图

先生成基础箱线图,再手动添加自定义颜色的连线和点:

library(ggpubr)

ggpaired(df, cond1 = "Time1", cond2 = "Time2", 
         fill = "condition", palette = "jco",
         xlab = "Sample Timepoint", ylab = "OD",
         # 隐藏默认的连线和点,后续手动添加
         line.size = 0, point.size = 0) +
  # 添加分组连线,按highlight映射颜色
  geom_line(data = df, aes(x = c(1, 2), y = c(Time1, Time2), 
                           group = Sample, color = highlight), 
            linewidth = 1) +
  # 添加Time1的点
  geom_point(data = df, aes(x = 1, y = Time1, color = highlight), size = 2) +
  # 添加Time2的点
  geom_point(data = df, aes(x = 2, y = Time2, color = highlight), size = 2) +
  # 设置颜色:普通样本灰色,样本D红色
  scale_color_manual(values = c("No" = "gray", "Yes" = "red")) +
  # 隐藏颜色图例(不需要的话)
  guides(color = "none") +
  theme(plot.title = element_text(colour = "Black", size = 14, face = "bold.italic"))

三、改用ggplot原生绘图(更灵活)

如果觉得ggpaired的限制较多,直接用ggplot原生函数构建图形,自由度更高:

步骤1:转换数据为长格式

library(tidyr)
# 宽格式转长格式,方便绘制箱线图
df_long <- pivot_longer(df, cols = c(Time1, Time2), 
                        names_to = "Timepoint", values_to = "OD")

步骤2:绘制箱线图+高亮连线/点

ggplot(df_long, aes(x = Timepoint, y = OD, fill = Timepoint)) +
  # 绘制箱线图,使用jco配色
  geom_boxplot() +
  # 添加配对连线,按Sample分组,颜色映射高亮状态
  geom_line(data = df, aes(x = factor(c("Time1", "Time2")), 
                           y = c(Time1, Time2), 
                           group = Sample, color = highlight), 
            linewidth = 1) +
  # 添加所有样本的点
  geom_point(aes(color = highlight), size = 2) +
  # 设置填充色和点/线颜色
  scale_fill_jco() +
  scale_color_manual(values = c("No" = "gray", "Yes" = "red")) +
  # 隐藏颜色图例
  guides(color = "none") +
  labs(x = "Sample Timepoint", y = "OD") +
  theme(plot.title = element_text(colour = "Black", size = 14, face = "bold.italic"))

四、方案选择

如果核心需求是展示配对样本的整体分布+突出特定样本的变化,两种方案都可行:

  • 用ggpaired的方案更贴近你原本的绘图逻辑,改动较小;
  • 原生ggplot方案更灵活,后续调整样式或添加其他元素更方便。

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:05:19