前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言ggtree按照指定的节点旋转树

R语言ggtree按照指定的节点旋转树

作者头像
用户7010445
发布于 2021-01-20 08:04:49
发布于 2021-01-20 08:04:49
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

R语言里的ggtree这个包可视化进化树有一个默认的顺序,如果想要改变枝的相对位置应该如何实现呢?通过查找ggtree作者写的帮助文档找到了对应的办法,可以使用rotate()函数

ggtree的帮助文档链接

http://yulab-smu.top/treedata-book/index.html

首先我们使用R语言内置的数据集mtcars做一个层次聚类
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mtcars
df<-mtcars[,c(1,3:6)]
df
df.hclust<-hclust(dist(df))
接下来使用ggtree对层次聚类的结果进行展示
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggtree)
ggtree(df.hclust)+
  geom_tiplab(offset = 2)+
  xlim(NA,280)+
  geom_highlight(node = 34,fill="blue")

image.png

我们看到图上标记蓝色的一个分支默认是在最底下的,如果想要把这个分支放到顶上应该如何修改呢?可以直接用ggtree中的rotate()函数。rotate()接受两个参数,一个是需要旋转的节点。另外一个就是树

先通过geom_text()函数给每个节点添加上文字标签
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggtree(df.hclust)+
  geom_tiplab(offset = 2)+
  xlim(NA,280)+
  geom_text(aes(label=node))

image.png

通过上图我们看到需要旋转的是33节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p1<-ggtree(df.hclust)+
  geom_tiplab(offset = 2)+
  xlim(NA,280)
  #geom_highlight(node = 34,fill="blue")
p2<-ggtree::rotate(p1,33)
p2+
  geom_hilight(node=34,fill="blue")

image.png

这样就把这一大块放到上面去了。

细心的读者可能发现了,这里在使用rotate()这个函数的时候写法是ggtree::rotate(p1,33),这样是为了使用指定包里的某个函数,因为R语言里的函数很多,有可能会重名,有时候你用到的函数可能并不是想实现功能的那个函数,所以比较保险的做法还是加上包的命名然后用两个冒号链接函数

还有一个知识点是如果想要这个树的开口朝下(现在是开口朝又),可以加
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggtree(df.hclust)+
  geom_tiplab(angle=90,offset = -70)+
  layout_dendrogram()

image.png

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先我们使用R语言内置的数据集mtcars做一个层次聚类
  • 接下来使用ggtree对层次聚类的结果进行展示
  • 先通过geom_text()函数给每个节点添加上文字标签
  • 还有一个知识点是如果想要这个树的开口朝下(现在是开口朝又),可以加
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档