树形图(dendrogram)是表示树的图。 这种图解表示经常多种场合中被使用:
在层次聚类中,它说明了由相应分析产生的聚类的排列;
在计算生物学中,它显示了基因或样本的聚类,有时在热图的边缘
在系统发育学中,它显示了各种生物类群之间的进化关系。 在这种情况下,树状图也称为系统发育树。
其实最简单的理解就是树形图是通过计算距离(计算距离的方式)来表示两个对象之间关系远近的图解。
#以内置的数据集为例data(iris)
处理的对象必须是数字类型(numeric或者integer)
#利用apply结合as.numeric转化为可使用的数字类型iris[,c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width')] 'Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width')],2,as.numeric)
计算距离
#简单的可直接用dist计算欧式几何距离iris_dist 'Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width')],method = 'euclidean')
进行层次聚类
iris_hclust 'average')
plot(iris_hclust)
直接用plot可直接画出Dendrogram,即树状图,但是有点丑.
1.通过ggdendro画图,这个包看名字就知道和ggplot2有勾搭
library(ggdendro)
ggdendrogram(iris_hclust)
2.发现一个有意思的function,这个不算是完整的包,但是可通过source来下使用
#从这个链接里source到本地使用source("http://addictedtor.free.fr/packages/A2R/lastVersion/R/code.R")op = par(bg = "grey75")iris_hclust$labels A2Rplot(iris_hclust, k = 3, boxes = TRUE, col.up = "purple", col.down = c("red","green","blue"),type='triangle')
op = par(bg = "grey75")
iris_hclust$labels A2Rplot(iris_hclust, k = 3, boxes = TRUE, col.up = "purple", col.down = c("red","green","blue"),type='rectangle')