之前的推文使用默认的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 axisaxis(side = 2, at = 0:5, col = "#F38630",     labels = FALSE, lwd = 2)# add text in marginmtext(0:5, side = 2, at = 0:5,      line = 1, col = "#A38630", las = 2)

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

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

op <- par(mfrow = c(2, 1))

# 高度在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
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(0, 0.1))

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 多平台发布

R语言聚类分析可视化相关推荐

  1. R语言聚类分析--cluster, factoextra

    R语言聚类分析–cluster, factoextra 本文转载自"R语言中文社区",己获授权,宏基因组公众号编辑对内容进行测试.修改及补充. 原文链接:https://mp.we ...

  2. 推荐:一本“高颜值”的R语言数据可视化图书(包邮送3本)

    文章留言点赞前3名的朋友,每人送1本<R语言数据化可视化之美增强版>,名单揭晓日期为:本周日 (2020年7月12日晚7点).到时,获奖的朋友可以直接添加微信:meta-genomics, ...

  3. 半折预售:新书-R语言数据可视化之美|ggplot2作者推荐

    我本来想等正式发售的时候,再告诉大家我的新书<R语言数据可视化之美>已经出版,奈何新书还太贵,这几天刚好京东有买100减50的活动,所以想想还是赶紧告诉大家吧,不然平时购买的话,太真有点小 ...

  4. R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_circle函数在数据簇或数据分组的数据点周围添加圆圈进行注释(自定义圆圈的大小)

    R语言ggplot2可视化:ggplot2可视化散点图并使用geom_mark_circle函数在数据簇或数据分组的数据点周围添加圆圈进行注释(自定义圆圈的大小) 目录

  5. R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label)

    R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label) 目录

  6. R语言ggplot2可视化箱图(boxplot)并使用ggsignif添加分组显著性(significance)标签

    R语言ggplot2可视化箱图(boxplot)并使用ggsignif添加分组显著性(significance)标签 目录 R语言ggplot2可视化箱图(boxplot)并使用ggsignif添加显 ...

  7. R语言ggplot2可视化移除数据中的NA值再可视化实战:消除图形中非常突出的NA柱状图、使用subset函数、使用drop_na函数

    R语言ggplot2可视化移除数据中的NA值再可视化实战:消除图形中非常突出的NA柱状图.使用subset函数.使用drop_na函数 目录

  8. R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:display only integer values on axis

    R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:display only integer values on axis 目录 R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:d

  9. R语言ggplot2可视化密度图(density plot)、改变密度图下的填充色实战

    R语言ggplot2可视化密度图(density plot).改变密度图下的填充色实战 目录 R语言ggplot2可视化密度图(density plot).改变密度图下的填充色实战

  10. R语言ggplot2可视化分组的重叠图实战:grouped overlay plot

    R语言ggplot2可视化分组的重叠图实战:grouped overlay plot 目录 R语言ggplot2可视化分组的重叠图实战:grouped overlay plot #仿真数据

最新文章

  1. select,epoll,poll比较
  2. python压缩包怎么安装-详解python解压压缩包的五种方法
  3. Spark Streaming从Kafka中获取数据,并进行实时单词统计,统计URL出现的次数
  4. wxml修改样式_微信小程序 动态绑定事件并实现事件修改样式
  5. 棋牌游戏服务器架构: 总体设计
  6. 【php7扩展开发五】函数调用
  7. #CSS# 初识CSS
  8. java webmethod 参数_java详解Spring接收web请求参数的方式
  9. 集合——对象数组(引用数据类型数组)
  10. Libusb开发教程一 安装
  11. 单独一台机器测试Open×××加密隧道的问题和解决
  12. C++ 一个字符串只包含K和D。K表示杀人,D表示死亡。计算连续杀敌次数,阵亡则归零。
  13. 威逼司机二选一,是滴滴垄断,还是嘀嗒碰瓷?
  14. 吉利车机安装第三方软件教程(win10笔记本详细操作方法)
  15. 解决:IDEA2017/2019与Maven3.6.3不兼容的导致的unable to import maven project: see logs for details问题
  16. ruby入门_loop
  17. 临床试验数据管理系统
  18. Mathematica 矩阵的LU分解
  19. 计算机网络---网卡,交换机和路由器|CSDN创作打卡
  20. 山西计算机专业三本大学排名,2021山西三本院校排名 最新大学排行榜

热门文章

  1. SuiteCRM 跨站脚本漏洞复现(CVE-2020-14208)
  2. java测试脚本怎么写_Jmeter测试脚本编写(初学者熟悉篇)
  3. 2.8数据-paddlepaddle数据集uci_housing
  4. 数学建模之matlab软件学习04——专题四MATLAB绘图
  5. Java生成png文件字体不清晰_导出pdf图片字体模糊
  6. Reflex WMS入门系列七:收货(Receipt)
  7. PCB 设计流程(allegro 为例)
  8. 《未来世界的幸存者》:你会是未来世界的幸存者吗?
  9. MATLAB app designer中全局变量的使用
  10. 微信公众号h5开发流程