查看原文
其他

R语言可视化聚类树

阿越 医学和生信笔记 2023-02-25

祝大家元旦快乐,祝大家在新的一年都能心想事成!

聚类分析也是一种常见的分析,今天简单介绍一下聚类分析的可视化。本次例子来自于《R语言实战》。

使用R自带的函数

加载数据和包:

data(nutrient, package = "flexclust") # 加载数据
head(nutrient) # 简单看一下数据

energy protein fat calcium iron
beef braised 340 20 28 9 2.6
hamburger 245 21 17 9 2.7
beef roast 420 15 39 7 2.0
beef steak 375 19 32 9 2.6
beef canned 180 22 10 17 3.7
chicken broiled 115 20 3 8 1.4

row.names(nutrient) <- tolower(row.names(nutrient)) # 把行名变成小写

接下来是对数据进行聚类分析,首先对数据进行标准化,然后计算距离矩阵,然后进行聚类分析:

nutrient.scaled <- scale(nutrient) # 标准化
d <- dist(nutrient.scaled) # 默认返回一个下三角矩阵

plot(hclust(d),hang = -1) # 使用R自带的聚类函数和画图函数

这样一幅图看起来并不是很美观,当然我们也可以增加颜色等,但是比较费事,接下来介绍的R包可以直接画出更好看的图。

使用factoextra包和FactoMineR

首先是加载数据和R包:

data(nutrient, package = "flexclust") # 加载数据
head(nutrient) # 简单看一下数据

energy protein fat calcium iron
beef braised 340 20 28 9 2.6
hamburger 245 21 17 9 2.7
beef roast 420 15 39 7 2.0
beef steak 375 19 32 9 2.6
beef canned 180 22 10 17 3.7
chicken broiled 115 20 3 8 1.4

row.names(nutrient) <- tolower(row.names(nutrient)) # 把行名变成小写

接下来是对数据进行聚类分析,首先对数据进行标准化,然后计算距离矩阵,然后进行聚类分析:

nutrient.scaled <- scale(nutrient) # 标准化
d <- dist(nutrient.scaled) # 默认返回一个下三角矩阵

fit.clt <- hcut(d, k = 3, stand = F) # 聚类分析,hcut()或者hclust()可以直接用下三角矩阵

# 可视化聚类树
fviz_dend(fit.clt,
rect = TRUE, # 是否增加边框
rect_border = "gray70", # 边框颜色
lower_rect = -5, # 控制边框边界
rect_lty = 2, # 边框线条类型
lwd = 1, # 线条粗细
rect_fill = F, # 边框是否使用填充色
cex = 1, # 大小
color_labels_by_k = T,
horiz = T, # 是否水平
palette = "lancet" # 或者用k_colors = c("#1B9E77", "#D95F02", "#7570B3")
)

这样一幅图是不是更美观呢?

今天只是简单介绍一下聚类分析的可视化,还有很多其他优秀的R包可以用来可视化聚类树,比如:ggtreeggdengro等,大家可以挑选自己喜欢的,我也会慢慢分享自己的学习笔记。

欢迎大家关注我的公众号:医学和生信笔记

医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存