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

如何将pvclust聚类树状图的样本名替换为对应FAB分组标签

pvclust聚类树替换样本标签为对应FAB分组

现有操作代码

读取并清洗表达矩阵

mat <-  read.table("Model_pvclust/Model18_FAB_M5_vs_M0_MAP_TF.txt",sep = "\t",strip.white = FALSE,check.names = FALSE,header=TRUE,row.names=1)
drop <- c("gene","baseMean","log2FoldChange","lfcSE","stat","pvalue","padj","UP_DOWN")
d1 <- select(mat, -one_of(drop))

读取样本元数据

metadata <-read.table("Model_hmap_meta/FAB_table.txt",sep = "\t",strip.white = FALSE,check.names = FALSE,header=TRUE,row.names=1)
head(metadata)

元数据前6行结构:

样本IDprior_malignancyFABRisk_Cyto
TCGA-AB-2856noM4Intermediate
TCGA-AB-2849noM0Poor
TCGA-AB-2971noM4Intermediate
TCGA-AB-2930noM2Intermediate
TCGA-AB-2891noM1Poor
TCGA-AB-2872noM3Good

原始聚类绘图代码

pvc <- pvclust( data = d1 , method.dist = "correlation", method.hclust = "complete",parallel = T)
plot(pvc,las=2,hang = -0.5)
pvrect(pvc, alpha = 0.9)

需求

当前输出的聚类树默认标注原始样本名称,需要匹配聚类后样本的排列顺序,将标签替换为元数据中对应样本的FAB列分组信息。

  • 当前生成的pvclust聚类图:pvclust聚类图
  • 期望效果参考图:期望效果参考图

解决方案

pvclust返回对象的hclust子对象中,labels元素按聚类树从左到右的叶子顺序存储了原始样本名,只需按该顺序匹配元数据中的FAB值,绘图时传入labels参数即可完成替换。
完整代码如下:

# 若未加载dplyr需先运行library(dplyr)
# 提取聚类树叶子节点的样本顺序
leaf_sample_order <- pvc$hclust$labels
# 按顺序匹配对应FAB分组作为新标签
fab_labels <- metadata[leaf_sample_order, "FAB"]
# 绘制替换标签后的聚类图
plot(pvc, las=2, hang=-0.5, labels = fab_labels)
pvrect(pvc, alpha = 0.9)

如果需要同时展示样本ID和FAB分组,可将标签拼接后再传入:

fab_labels <- paste0(leaf_sample_order, " (", metadata[leaf_sample_order, "FAB"], ")")

注意:运行前需确认表达矩阵的列名(样本ID)和元数据的行名完全匹配,无缺失、拼写不一致的情况,否则会出现标签匹配为NA的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:15:30