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

如何在运行agnes聚类前为样本名(树结构叶节点)上色以观测批次效应

agnes聚类树按批次给叶节点着色方案

可以实现,样本叶节点的着色属于可视化环节的操作,和聚类计算步骤没有先后绑定关系,你完全可以提前按照批次分组给样本指定颜色,不需要依赖聚类输出的分群结果。

完整操作步骤

1. 原有聚类逻辑保留,额外准备批次分组信息

library(cluster)
# 你的原有聚类代码
df_clust <- na.omit(df)
df_clust <- scale(df_clust)
df_clust <- t(df_clust)
agn_clust <- agnes(df_clust, method = "ward") # 存储聚类结果对象

# 准备批次分组向量,*必须和df_clust的行顺序完全对应*
# 示例:前5个样本为批次1,后5个为批次2,请替换为你的真实批次元数据
batch_group <- factor(c(rep("批次1",5), rep("批次2",5)))
names(batch_group) <- rownames(df_clust) # 绑定样本名避免顺序错位

2. 可视化着色方案

方案1:ggtree实现(更灵活,推荐用于对比可视化)

library(ggtree)
library(ggplot2)

# 转换聚类结果为树结构
tree <- as.hclust(agn_clust)

# 绘制聚类树,按批次给叶节点和样本名上色
ggtree(tree) + 
  geom_tippoint(aes(color = batch_group[label]), size=2) + # 叶节点圆点着色
  geom_tiplab(aes(color = batch_group[label]), offset=0.2) + # 样本名着色
  scale_color_manual(values = c("批次1" = "#E41A1C", "批次2" = "#377EB8"), name="批次分组") +
  theme(legend.position = "bottom")

方案2:基础R+ape包实现

library(ape)
tree <- as.phylo(as.hclust(agn_clust))
# 生成叶节点颜色向量
tip_colors <- ifelse(batch_group == "批次1", "#E41A1C", "#377EB8")
# 绘图
plot(tree, tip.color = tip_colors, cex = 0.8)
legend("topright", legend = levels(batch_group), fill = c("#E41A1C", "#377EB8"), title = "批次分组")

批次校正前后对比说明

分别对校正前、校正后的表达矩阵执行上述聚类和可视化操作,保持批次的颜色映射规则完全一致,即可直观观察批次效应的校正效果:校正前同一批次样本会明显聚集,校正后不同批次的样本会按生物特征而非批次分组聚集。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 21:06:03