使用hclust以及ggtree进行层次聚类可视化

1. 首先读取数据

setwd("D:/Desktop/")
d <- read.table("merge.tpm.txt",  header = T, row.names = 1)
head(d)
      sample1  sample2
gene1    32       43
gene2    14       53

2. 数据处理

df <- scale(d)  # 进行数据标准化
df <- dist(t(df), method="euclidean")  # 计算样品间距离,提前将数据进行转置,因为dist函数会计算每行之间的距离。而我们需要计算每列的各个样品之间的距离

3. hclust聚类

hc <- hclust(df, method="complete")
plot(hc, hang = -1, ylab = "Height")  # hang 调整样品名与线的距离
聚类效果图

4. 使用cutree对树进行修建及分组

cut0 <- cutree(hc, k = 6)  # 手动指定分多少组
rect.hclust(hc, k = 6)
分组后效果

5. 使用ggtree绘制圈图

library(ggtree)
group <- data.frame(label=names(cut0), member=factor(cut0))  # 创建hclust的分组信息用于ggtree绘图
ggtree(ape::as.phylo(hc), 
       linetype='dashed', 
       color = "#487AA1", 
       layout = "fan") %<+% group +
  geom_tiplab(aes(color = member), size=4) + 
  theme(legend.position = "right")
最终效果
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容