R语言聚类分析可视化

本文介绍了如何使用R语言进行层次聚类树的高级可视化,包括通过`par`函数调整默认可视化参数,使用`as.dendrogram`转换并指定更多细节,以及切割树并修改节点属性如颜色和形状来定制聚类树的显示。同时,展示了如何为不同聚类分配不同颜色,并添加图例,以增强可视化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前的推文使用默认的plot函数进行聚类树的可视化,今天继续扩展聚类树的可视化。

默认的聚类树可视化函数已经非常好用,有非常多的自定义设置,可以轻松实现好看的聚类树可视化。

op <- par(bg = "grey90")

plot(h.clust, main = "层次聚类", sub="", xlab = "",
     col = "#487AA1", col.main = "#45ADA8", col.lab = "#7C8071",
     col.axis = "#F38630", lwd = 2, lty = 1, hang = -1, axes = FALSE)
# add axis
axis(side = 2, at = 0:5, col = "#F38630",
     labels = FALSE, lwd = 2)
# add text in margin
mtext(0:5, side = 2, at = 0:5,
      line = 1, col = "#A38630", las = 2)
plot of chunk unnamed-chunk-8
plot of chunk unnamed-chunk-8
par(op)

如果对默认的可视化效果不满意,可以先用as.dendrogram()转化一下,再画图可以指定更多细节。

dhc <- as.dendrogram(h.clust)
plot(dhc,type = "triangle"# 比如换个类型
plot of chunk unnamed-chunk-9
plot of chunk unnamed-chunk-9

可以提取部分树进行查看,使用cut指定某个高度以上或以下的树进行查看。

op <- par(mfrow = c(21))

# 高度在3以上的树
plot(cut(dhc, h = 3)$upper, main = "Upper tree of cut at h=3")

# 高度在3以下的树
plot(cut(dhc, h = 3)$lower[[2]],
     main = "Second branch of lower tree with cut at h=3")
plot of chunk unnamed-chunk-10
plot of chunk unnamed-chunk-10
par(op)

每一个节点都有不同的属性,比如颜色、形状等,我们可以用函数修改每个节点的属性。

比如修改标签的颜色。

# 按照上面画出来的结果,我们可以分为5类,所以准备好5个颜色
labelColors = c("#CDB380""#036564""#EB6841""#EDC951""#487AA1")

# 把聚类树分为5个类
clusMember <- cutree(h.clust,k=5)

# 给标签增加不同的颜色
colLab <- function(n) {
  if (is.leaf(n)) {
    a <- attributes(n)
    labCol <- labelColors[clusMember[which(names(clusMember) == a$label)]]
    attr(n, "nodePar") <- c(a$nodePar,
                            list(cex=1.5# 节点形状大小
                                 pch=20# 节点形状
                                 col=labCol, # 节点颜色
                                 lab.col=labCol, # 标签颜色
                                 lab.font=2# 标签字体,粗体斜体粗斜体
                                 lab.cex=1 # 标签大小
                                 )
                            )
  }
  n
}

# 把自定义标签颜色应用到聚类树中
diyDendro = dendrapply(dhc, colLab)    

# 画图
plot(diyDendro, main = "DIY Dendrogram")  

# 加图例
legend("topright"
     legend = c("Cluster 1","Cluster 2","Cluster 3","Cluster 4","Cluster 5"), 
     col = c("#CDB380""#036564""#EB6841""#EDC951""#487AA1"), 
     pch = c(20,20,20,20,20), bty = "n", pt.cex = 2, cex = 1 , 
     text.col = "black", horiz = FALSE, inset = c(00.1))
plot of chunk unnamed-chunk-11
plot of chunk unnamed-chunk-11

如果想要更加精美的聚类分析可视化,可以参考之前的几篇推文:

  • R语言可视化聚类树
  • R语言画好看的聚类树
  • 又是聚类分析可视化
  • 树状数据/层次数据可视化

参考资料

  1. R帮助文档
  2. https://r-graph-gallery.com/31-custom-colors-in-dendrogram.html
  3. https://www.gastonsanchez.com/visually-enforced/how-to/2012/10/0/Dendrograms/

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值