• R语言聚类分析可视化


    之前的推文使用默认的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)
    • 1
    plot of chunk unnamed-chunk-8
    plot of chunk unnamed-chunk-8
    par(op)
    • 1

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

    dhc <- as.dendrogram(h.clust)
    plot(dhc,type = "triangle"# 比如换个类型
    • 1
    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")
    • 1
    plot of chunk unnamed-chunk-10
    plot of chunk unnamed-chunk-10
    par(op)
    • 1

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

    比如修改标签的颜色。

    # 按照上面画出来的结果,我们可以分为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))
    • 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 多平台发布

  • 相关阅读:
    华为数通方向HCIP-DataCom H12-821题库(单选题:281-300)
    前端TS学习笔记 (JS和TS优劣对比)
    什么是邮件签名证书?
    python爬取深交所各行业前三上市公司市值
    告别杂音,从 AI 音频降噪开始
    一文带你玩转Redis缓存数据库
    JavaScript - 将 Allegro 坐标文件转为嘉立创坐标文件(CSV 格式)的工具
    WebGIS瓦片基础原理
    C++11 线程库
    整理mongodb文档:事务(一)
  • 原文地址:https://blog.csdn.net/Ayue0616/article/details/127796884