###读取数据常见错误:
在读取数据过程中可能遇到以下问题,参照上一篇博客:

可能遇到报错:

1、Error in if (is.na(n) || n > 65536L) stop(“size cannot be NA nor exceed 65536”) :
missing value where TRUE/FALSE needed

没有处理数据转化距离。

2、Error in hclust(dist(test)) : NA/NaN/Inf in foreign function call (arg 11)
In addition: Warning message:
In dist(test) : NAs introduced by coercion

数据读入方式错误,详见各参数,与两种数据类型。
###Plot开始画图:

> test<-read.table("C:/Users/admin/Desktop/test.txt")
> hc = hclust(dist(test))
plot(hc,hang=1,cex=0.5,labels = NULL)


###另类聚类图

将hclude生成的对象转换为另类的聚类图

> hcd = as.dendrogram(hc)
> plot(hcd)

# tweeking some parameters
op=par(bg="#DDE3CA")
plot(hc,col="#487AA1",col.main="#45ADA8",col.lab="#7C8071",col.axis="#F38630",lwd=3,lty=3,sub="",hang=-1,axes=FALSE)# add axis
axis(side=2,at=seq(0,400,100),col="#F38630",labels=FALSE,lwd=2)# add text in margin
mtext(seq(0,400,100),side=2,at=seq(0,400,100),line=1,col="#A38630",las=2)

plot(hcd, type = "triangle")

放大在树状图
另一个非常有用的功能是选择树的一部分。例如,如果我们要研究的树状图上的分区,我们可以把它在一个高度75

op = par(mfrow = c(2, 1))
> plot(cut(hcd, h = 75)$upper, main = "Upper tree of cut at h=75")
> plot(cut(hcd, h = 75)$lower[[2]], main = "Second branch of lower tree with cut at h=75")

为了获得更多的定制的图形,我们需要更多的代码。一个非常有用的功能dendrapply可以应用一个函数的一dendrgoram所有节点。如果我们要添加一些色彩的标签这是非常方便的。

labelColors = c("#CDB380", “#036564”, “#EB6841”, “#EDC951”)
clusMember = cutree(hc, 4)
colLab <- function(n) {

  • if (is.leaf(n)) {
    
  •     a <- attributes(n)
    
  •     labCol <- labelColors[clusMember[which(names(clusMember) == a$label)]]
    
  •     attr(n, "nodePar") <- c(a$nodePar, lab.col = labCol)
    
  • }
    
  • n
    
  • }

clusDendro = dendrapply(hcd, colLab)
plot(clusDendro, main = “Cool Dendrogram”)

由R包ape提供更具吸引力的树非常好的工具,利用as.phylo功能将hclust objects转换成phylo对象

plot(as.phylo(hc), cex = 0.5, label.offset = 5)

###4种不同类型的聚类树形图
plot.phylo函数的4种不同类型的聚类树形图

plot(as.phylo(hc), type ="cladogram", cex = 0.9, label.offset = 1)

plot(as.phylo(hc), cex=1,type = "unrooted")

圆形树形图

# fan
plot(as.phylo(hc), cex=1,label.offset = 2,type = "fan")

plot(as.phylo(hc), type = "radial")

自定义的系统进化树

ape包对树的性状有着很多控制,能够定制他们以不同的方式。例如:

plot(as.phylo(hc), type = “fan”, tip.color = hsv(runif(15, 0.65, 0.95), 1, 1, 0.7), edge.color = hsv(runif(10, 0.65, 0.75), 1, 1, 0.7), edge.width = runif(20,0.5, 3), use.edge.length = TRUE, col = “gray80”)

修改一些参数

mypal=c("#556270", "#4ECDC4", "#1B676B", "#FF6B6B", "#C44D58")
clus5=cutree(hc, 5)
op=par(bg="#E8DDCB")
plot(as.phylo(hc), type="fan", tip.color=mypal[clus5], label.offset=1, cex=log(mtcars$mpg, 10), col="red")

###彩色叶子节点

The Rpackagesparclprovides theColorDendrogramfunction that allows to add some color. For example, we can add color to theleavesR包还提供ColorDendrogram功能来让我们给聚类树点颜色看看。比如我们可以给叶子节点来点颜色# install.packages('sparcl')
library(sparcl)
# colors the leaves of a dendrogram
y=cutree(hc, 3)
ColorDendrogram(hc, y=y, labels=names(y), main="My Simulated Data", branchlength=80)

R包ggplot2没有功能绘制树状图的原因我不知道。然而,包ggdendro提供一个像样的解决方案。

library(ggdendro)
library(plyr)
# basic option
ggdendro(hc)

#another option
ggdendrogram(hc, rotate = TRUE, size = 4, theme_dendro = FALSE, color ="tomato")

# Triangular lines
ddata <- dendro_data(as.dendrogram(hc), type = "triangle")
ggplot(segment(ddata)) + geom_segment(aes(x = x, y = y, xend = xend,
yend = yend)) + ylim(-10, 150) + geom_text(data = label(ddata), aes(x = x,
y = y, label = label), angle = 90, lineheight = 0)


Colored dendrogram

Lastbut not least, there's one more resource available from Romain Francois'saddicted to Rgraph gallery which I find really interesting. The code inR for generating colored dendrograms, which you can download and modify ifwanted so, is availablehere最后,你可以到罗曼弗朗索瓦的图形库里面进一步学习~~~你甚至可以修改他的代码地址是:http://gallery.r-enthusiasts.com/RGraphGallery.PHP?graph=79(貌似要翻墙)http://addictedtor.free.fr/packages/A2R/lastVersion/R/code.R# load code of A2R function
source("http://addictedtor.free.fr/packages/A2R/lastVersion/R/code.R")
# colored dendrogram
op=par(bg="#EFEFEF")
A2Rplot(hc, k=3, boxes=FALSE, col.up="gray50", col.down=c("#FF6B6B", "#4ECDC4", "#556270"))

par(op)

#another colored dendrogram
op = par(bg = "gray15")
cols = hsv(c(0.2, 0.57, 0.95), 1, 1, 0.8)
A2Rplot(hc, k = 3, boxes = FALSE, col.up = "gray50", col.down = cols)


二维码查看:

R语言之系统聚类(层次)分析之图谱形式完整版相关推荐

  1. R语言应用实战-基于R语言的综合评价(层次分析法AHP为例)

    一.综合评价的基本概念 对一个事物的评价往往会涉及多个因素或者多个指标,评价是在多个因素相互作用下的一个综合判断.多指标综合评价方法具有以下的特点:包含若干个指标,分别说明被评价对象的不同方面,评价方 ...

  2. R语言绘制带聚类树的堆叠柱形图

    R语言绘制带聚类树的堆叠柱形图 聚类树与柱形图结合,即可反映样本或分组间的相似性,又能展示样本内的元素组成信息. 例如下图是一个在扩增子测序微生物群落分析中常见的统计图类型,在测序公司给的报告中通常都 ...

  3. R语言分位数回归Quantile Regression分析租房价格

    全文链接:http://tecdat.cn/?p=18422 本文想在R软件中更好地了解分位数回归优化.在查看分位数回归之前,让我们从样本中计算中位数或分位数(点击文末"阅读原文" ...

  4. R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系

    原文链接:http://tecdat.cn/?p=22215 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以使这些变量差分而平 ...

  5. r语言 bsda包_使用R语言creditmodel包进行Vintage分析或留存率分析

    1 什么是vintage分析? Vintage分析(账龄分析法)被广泛应用于信用卡及信贷行业,这个概念起源于葡萄酒,即不同年份出产的葡萄酒的品质有差异,那么不同时期开户或者放款的资产质量也有差异,其核 ...

  6. R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入、生存对象生成、ggsurvplot可视化参数配置、设置、可视化对比

    R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入.生存对象生成.ggsurvplot可视化参数配置.设置.可视化对比 目录 R语言使用survminer包生 ...

  7. R语言Logistic回归模型案例:分析吸烟、饮酒与食管癌的关系

    R语言Logistic回归模型案例:分析吸烟.饮酒与食管癌的关系 目录 R语言Logistic回归模型案例分析吸烟.饮酒与食管癌的关系 #样例数据

  8. R语言描述性统计分析:相关性分析

    R语言描述性统计分析:相关性分析 相关性分析:pearson.spearman.kendall 相关性系数的显著性检验: 偏相关性分析: library(ISwR) attach(thuesen) c ...

  9. R语言临床诊断试验的ROC分析方法示例

    R语言临床诊断试验的ROC分析方法示例 ROC(receiver operating characteristic curve)接收者操作特征曲线,是由二战中的电子工程师和雷达工程师发明用来侦测战场上 ...

最新文章

  1. openssl生成证书linux,linux中openssl生成证书和自签证书linux操作系统 -电脑资料
  2. AWS:避免那些“神圣的法案”时刻的一些技巧
  3. LeetCode 237. 删除链表中的节点
  4. matlab 文件之间相互调用实例
  5. linux内核配置成qspi挂载,Zynq-Linux移植学习笔记之十-qspi驱动配置
  6. mysql 命令之工作小结
  7. 【Python】P2525 Uim的情人节礼物·其之壱
  8. 语音直播开发平台打造新娱乐社交模式
  9. 计算机常年开机,电脑长时间开机的危害
  10. uniapp获取当前经纬度 地图 支持搜索
  11. 北京龙庆峡自助游及攻略
  12. 学习笔记1--过滤器代理
  13. oracle安装成功验证
  14. 企业邮箱如何设置邮件模板
  15. python开发微信群_Python编程:微信群聊程序的开发与进/线程知识汇总(附代码)
  16. Exception encountered during context initialization(报错详解)
  17. 前端FormData详解
  18. ajaxsubmit提交两次
  19. 前端vue项目打包部署
  20. 双线机房双网卡双ip 路由设置

热门文章

  1. 使用kali对同一局域网内的设备进行断网和查看设备图片
  2. Java File、Paths、Path的意外错误:file.exists() 结果错误
  3. 最优布线问题(三种方法)
  4. [QUANTAXIS量化分析]三因素模型
  5. WEB、WEB标准、W3C的理解
  6. Warning: findDOMNode is deprecated in StrictMode
  7. 网站关键词排名:关键词排名提升的5个方法!
  8. 风控策略的自动化生成-利用决策树分分钟生成上千条策略
  9. ajaxSubmit来上传文件
  10. NLP聊天机器人的搭建(chatbot)(一)