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")
最终效果