其他
R语言可视化聚类树
祝大家元旦快乐,祝大家在新的一年都能心想事成!
聚类分析也是一种常见的分析,今天简单介绍一下聚类分析的可视化。本次例子来自于《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包可以用来可视化聚类树,比如:ggtree
、ggdengro
等,大家可以挑选自己喜欢的,我也会慢慢分享自己的学习笔记。
欢迎大家关注我的公众号:医学和生信笔记
医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!