前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言ggtree画圆形的树状图展示聚类分析的结果

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

作者头像
用户7010445
发布于 2020-11-13 01:56:59
发布于 2020-11-13 01:56:59
3.7K00
代码可运行
举报
运行总次数:0
代码可运行
今天的主要内容是实现下面这幅图

image.png

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

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()就可以,比如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggtree)
hc <- hclust(dist(mtcars))
ggtree(hc)

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
install.packages("BiocManager")
BiocManager::install("ggtree")

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggtree)
hc <- hclust(dist(mtcars))
ggtree(hc)

image.png

基本的美化

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggtree(hc,layout = "circular")+
  geom_tiplab2(offset=10)+
  xlim(0,300)

image.png

接下来我们用鸢尾花的数据集试一下

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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")

最终的结果是

image.png

这里关于最外圈文本位置的调整,我还的再仔细看看,这里出图后位置不太合适,我是手动调整的!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
wget命令详解——批量下载等
(1)支持断点下传功能 (2)同时支持FTP和HTTP下载方式 (3)支持代理服务器 (4)设置方便简单 (5)程序小,完全免费 wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:wget [参数列表] URL。下面就结合具体的例子来说明一下wget的用法。 1、下载整个http或者ftp站点。
Qicloud
2022/01/28
13.1K0
wget命令详解(断点续传,批量下载)
[导读](1)支持断点下传功能 (2)同时支持FTP和HTTP下载方式 (3)支持代理服务器 (4)设置方便简单 (5)程序小,完全免费 wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:wget [参数列表] URL。下面就...
用户3765803
2019/03/05
14K0
Wget 大法wget 指定路径,指定文件名下载
图片 今天用到了Wget,突然一时间想不起来wget的下载到指定目录是哪个参数了,特地把所有参数都弄来,以防又忘记了。毕竟脚本是写了之后,半年都不用改,坑! 有
用户2353021
2020/05/09
10.5K0
python wget下载文件
-P PREFIX 将文件保存在目录(--directory-prefix=PREFIX)
py3study
2020/01/09
5.5K0
wget命令详解,断点续传[通俗易懂]
(1)支持断点下传功能 (2)同时支持FTP和HTTP下载方式 (3)支持代理服务器 (4)设置方便简单 (5)程序小,完全免费
全栈程序员站长
2022/09/05
10.1K0
linux的wget命令
Linux wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。下面我们以实例的形式说明怎么使用wget。
狼啸风云
2019/11/05
4.1K0
重新认识wget
Wget是平时经常会用到的一个工具,这个工具其实有着非常丰富的参数和配置,能够实现很强大的功能。比较常用的一个就是抓站或者为网站做镜像。
大江小浪
2018/07/25
1.1K0
wget常用命令详解
一、wget常用命令详解 wget命令是Linux系统用于从Web下载文件的命令行工具,支持 HTTP、HTTPS及FTP协议下载文件, 而且wget还提供了很多选项,例如下载多个文件、后台下载,使用代理等等,使用非常方便。 接下来就介绍一下wget的使用方法。 wget命令的使用 语法格式 wget [options] [url] #示例,默认下载目录当前目录下 wget https://down.sandai.net/thunder11/XunLeiWebSetup11
懿曲折扇情
2022/08/24
2.2K0
Linux下载工具wget使用
wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip 
kl博主
2023/11/18
6660
Linux wget 命令用法详解
Linux系统中的wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。
用户6543014
2019/10/25
5.3K0
WGet使用指南
wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.
一见
2018/08/07
1.1K0
每天一个linux命令(61):wget命令
http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html
bear_fish
2018/09/20
2.2K0
windows安装wget命令_linux安装命令install
今天给服务器安装新LNMP环境时,wget 时提示 -bash:wget command not found,很明显没有安装wget软件包。一般linux最小化安装时,wget不会默认被安装。
全栈程序员站长
2022/08/03
5.6K0
wget常用参数
****前言**** 一句话:wget不仅功能强大,使用极其简单的。 ---- ****wget特性**** 支持断点下传功能【important】 同时支持FTP和HTTP下载方式 支持代理服务器 设置方便简单 程序小,更是开源 ---- ****基本语法**** wget [参数列表] URL。 ---- ****常用参数**** 1、简单wget $wget http://www.example.com 2、递归下载 - 【下载整个网站资源】 $wget -r http://www.example
AlicFeng
2018/06/08
1.2K0
Linux网络下载管理工具(lftp, ftp, lftpget, wget)「建议收藏」
在Linux运维开发工作中,经常会使用到ftp工具,近来发现了一款比较趁手的工具,望读者喜欢。
全栈程序员站长
2022/09/03
2.4K0
Linux网络下载管理工具(lftp, ftp, lftpget, wget)「建议收藏」
linux应用之wget命令详解
wget是linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径
用户5640963
2019/07/26
2K0
文件查找下载命令
描述:在后台数据库中按文件名搜索,速度更快,通过/var/lib/mlocate内数据库记载找出用户输入的关键字文件名,它的更新速率默认是一天一次,Linux版本的不同名字不同Mac下在/var/db/locate.datebase; 根据距上次更新后更改的文件数目多少,速度不同并且只能通过文件名来搜索
全栈工程师修炼指南
2020/12/17
2.5K0
文件查找下载命令
客户端如何查找FTP服务器的用户名和密码
在互联网的早期阶段,FTP(文件传输协议)是一种非常常用的技术,它允许用户在计算机之间传输文件。然而,由于网络安全和隐私的考虑,许多FTP服务器现在都使用认证系统来限制用户的访问。因此,为了连接到FTP服务器,您通常需要知道用户名和密码。这篇文章将指导您如何在客户端查找FTP服务器的用户名和密码。
德迅云安全--陈琦琦
2023/11/03
1.9K0
win10系统下搭建FTP服务器(完成文件上传与下载)
FTP (File Transfer Protocol) 可说是最古老的协议之一了,主要是用来进行文件的传输,尤其是大型文件的传输使用 FTP 更是方便。
DS小龙哥
2022/01/17
34.7K0
win10系统下搭建FTP服务器(完成文件上传与下载)
Linux工具之curl与wget高级使用
# curl –s –o baidu.html www.baidu.com |iconv -f utf-8  #减少输出信息
子润先生
2021/06/17
1.2K0
相关推荐
wget命令详解——批量下载等
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验