温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

R语言中怎么用ggtree画圆形的树状图展示聚类分析的结果

发布时间:2021-11-22 14:44:26 来源:亿速云 阅读:1090 作者:柒染 栏目:大数据

今天就跟大家聊聊有关R语言中怎么用ggtree画圆形的树状图展示聚类分析的结果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

 今天的主要内容是实现下面这幅图
R语言中怎么用ggtree画圆形的树状图展示聚类分析的结果  
image.png

做完聚类分析通常可以选择树形图来展示聚类分析的结果,之前公众号也分享过一篇文章  R语言聚类树图小例子 如果样本数不是很多,可以选择矩形的树状图。但是样本数如果比较多,比如今天一位公众号的读者留言说他有160多个样本,这样矩形的树状图就会比较宽或者比较长。这个时候就可以选择用圆形的柱形图来展示。

那么圆形的树状图如何实现呢?我查找了一下相关资料。R语言包dendextend这个包可以实现,利用help(package="dendextend")查看帮助文档,能够看到其中的一个小例子

iris2<-iris[,-5]
species_labels<-iris[,5]
library(colorspace)
species_col<-rev(rainbow_hcl(3))[as.numeric(species_labels)]
d_iris<-dist(iris2)
hc_iris<-hclust(d_iris,method="complete")
iris_species<-rev(levels(iris[,5]))
iris_species
library(dendextend)
dend<-as.dendrogram(hc_iris)
dend <- color_branches(dend, k=3)

labels(dend) <- paste(as.character(iris[,5])[order.dendrogram(dend)],
                     "(",labels(dend),")",
                     sep = "")
circlize_dendrogram(dend)
 
R语言中怎么用ggtree画圆形的树状图展示聚类分析的结果  
image.png

但是这个后期美化起来好像不太方便。

还找到了一个参考链接是 http://talgalili.github.io/dendextend/articles/dendextend.html

介绍的也是 dendextend这个包的用法。

Y叔开发的ggtree包时用来可视化进化树的,我隐约记得好像也可以用来画聚类分析的树状图。所以我搜索 ggtree show cluster result 找到 http://yulab-smu.top/treedata-book/chapter9.html 这个应该是Y叔专门为ggtree写的一本书。这里写到直接将聚类分析的结果传递给ggtree()就可以,比如

library(ggtree)
hc <- hclust(dist(mtcars))
ggtree(hc)
 

这里我先用了 我之前在3.6.1版本上安装的ggtree,是不可以的。应该是需要更新到最新的ggtree版本。如何更新R包这里我没有仔细研究。我直接安装了R4.0.3,然后在这个R版本里安装ggtree

install.packages("BiocManager")
BiocManager::install("ggtree")
 

这个时候再运行上面提到的例子就可以直接得到结果

library(ggtree)
hc <- hclust(dist(mtcars))
ggtree(hc)
 
R语言中怎么用ggtree画圆形的树状图展示聚类分析的结果  
image.png
 基本的美化

把树的形状改为圆形,添加样本的名称

ggtree(hc,layout = "circular")+
 geom_tiplab2(offset=10)+
 xlim(0,300)
 
R语言中怎么用ggtree画圆形的树状图展示聚类分析的结果  
image.png
 接下来我们用鸢尾花的数据集试一下

鸢尾花数据集是150个样本,用圆形的图看下效果

df<-iris[,1:4]  
rownames(df)<-paste(iris$Species,1:150,sep="_")

hc<-hclust(dist(df))
library(ggtree)
help(package="ggtree")
ggtree(hc,layout="circular")+
 xlim(0,5)+
 geom_tiplab2(offset=0.1,
              size=2)+
 #geom_text(aes(label=node))+
 geom_highlight(node = 152,fill="red")+
 geom_highlight(node=154,fill="steelblue")+
 geom_highlight(node=155,fill="green")+
 geom_cladelabel(node=152,label="virginica",
                 offset=1.2,barsize = 2,
                 vjust=-0.5,color="red")+
 geom_cladelabel(node=154,label="versicolor",
                 offset=1.2,barsize = 2,
                 hjust=1.2,color="steelblue")+
 geom_cladelabel(node=155,label="setosa",
                 offset=1.2,barsize = 2,
                 hjust=-1,color="green")
 

最终的结果是

R语言中怎么用ggtree画圆形的树状图展示聚类分析的结果  

看完上述内容,你们对R语言中怎么用ggtree画圆形的树状图展示聚类分析的结果有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI