当前位置:网站首页>怎么使用R包ggtreeExtra绘制进化树
怎么使用R包ggtreeExtra绘制进化树
2022-06-24 18:50:00 【亿速云】
怎么使用R包ggtreeExtra绘制进化树
这篇“怎么使用R包ggtreeExtra绘制进化树”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用R包ggtreeExtra绘制进化树”文章吧。
引言
ggplot2提供的geom_tile图层可以画热图了,ggplot2的geom_point或者ggstar的geom_star可以绘制点图层。为了扩展ggtree在点和布局中的系统发育树的外环上呈现相关数据,开发的ggtreeExtra包提供了一个函数,geom_fruit用于将图形与树对齐,相关图表将在树的外部面板的不同位置对齐。还开发geom_fruit_list在树的同一个外部面板上添加多个层。一些函数基于ggplot2并支持使用图形语法。
绘图示例
1、下载安装ggtreeExtra包
if(!requireNamespace("remotes", quietly=TRUE)){ install.packages("remotes")}remotes::install_github("YuLab-SMU/ggtreeExtra")if (!requireNamespace("BiocManager", quietly=TRUE)) install.packages("BiocManager")BiocManager::install("ggtreeExtra")BiocManager::install("ggstar")# 下载"ggstar","ggplot2","ggtree","treeio","ggnewscale"包install.packages("ggstar")install.packages("ggplot2")install.packages("ggtree")install.packages("treeio")install.packages("ggnewscale")
2、加载依赖包
library(ggtreeExtra) # 设置叠加的包library(ggstar) # 提供几何图形library(ggplot2) # library(ggtree) # 绘制进化树library(treeio)library(ggnewscale) # 创建新的scale,多个fill或者color
3、设置工作目录
setwd("D:/R/ggtreeExtra")
4、数据来源
# 树状图数据来源路径trfile <- system.file("extdata", "tree.nwk", package="ggtreeExtra")# 绘制点图和柱状图的数据来源路径tippoint1 <- system.file("extdata", "tree_tippoint_bar.csv", package="ggtreeExtra")# 树外第一层的绘制热图来数据源路径ring1 <- system.file("extdata", "first_ring_discrete.csv", package="ggtreeExtra")# 树外第二层的绘制热图来数据源路径ring2 <- system.file("extdata", "second_ring_continuous.csv", package="ggtreeExtra")
5、获取数据
树文件是使用 read . tree 导入的。如果有其他树格式的文件,可以使用 tree io 包的相应函数来读取.
tree <- read.tree(trfile)data = fortify(tree)head(data)
6、绘制树状图
# 可视化进化树,这里图形选用的是"fan",还可以是 'rectangular', 'dendrogram', 'slanted', 'ellipse', 'roundrect', 'circular', 'circular', 'inward_circular', 'radial', 'equal_angle', 'daylight' or 'ape'p <- ggtree(tree, layout="fan", open.angle=10, size=0.5)p
7、获取数据集绘制图
dat1 <- read.csv(tippoint1)knitr::kable(head(dat1))dat2 <- read.csv(ring1)knitr::kable(head(dat2))dat3 <-read.csv(ring2)knitr::kable(head(dat3))head(dat3)
dat1数据集用来绘制成点和条形图
dat2数据集用于绘制热图
dat3数据集用于绘制热图
a、绘制点图层
p2 <- p + geom_fruit( data=dat1, geom=geom_star, mapping=aes(y=ID, fill=Location, size=Length, starshape=Group), position="identity", starstroke=0.2 ) + scale_size_continuous( range=c(1, 3), # 大小范围 guide=guide_legend( keywidth=0.5, # 箱体宽度0.5 Keyheight=0.5, # 箱体宽度0.5 override.aes=list(starshape=15), order=2 ) ) + scale_fill_manual( values=c("#F8766D", "#C49A00", "#53B400", "#00C094", "#00B6EB", "#A58AFF", "#FB61D7"), guide="none" ) + scale_starshape_manual( values=c(1, 15), guide=guide_legend( keywidth=0.5, keyheight=0.5, order=1 ) )p2
b、绘制热图层
p3 <- p2 + new_scale_fill() + geom_fruit( data=dat2, geom=geom_tile, mapping=aes(y=ID, x=Pos, fill=Type),offset=0.08, # 外部层之间的距离,默认为树的 x 范围的0.03倍。pwidth=0.25 # 外部层的宽度,默认为树的 x 范围的0.2倍。 ) + scale_fill_manual( values=c("#339933", "#dfac03"),guide=guide_legend(keywidth=0.5,keyheight=0.5, order=3) ) p3
c、绘制热图层
p4 <- p3 + new_scale_fill() + geom_fruit( data=dat3, geom=geom_tile, mapping=aes(y=ID, x=Type2, alpha=Alpha, fill=Type2), pwidth=0.15, axis.params=list( axis="x", # 添加图层的轴文本 text.angle=-45, #x 轴的文本角度hjust=0 # 调整文字轴的水平位置 ) ) + scale_fill_manual( values=c("#b22222", "#005500", "#0000be", "#9f1f9f"), guide=guide_legend(keywidth=0.5, keyheight=0.5, order=4) ) + scale_alpha_continuous(range=c(0, 0.4), # alpha的范围guide=guide_legend(keywidth=0.5, keyheight=0.5, order=5) ) p4
d、绘制柱状图层
p5 <- p4 + new_scale_fill() + geom_fruit( data=dat1, geom=geom_bar,mapping=aes(y=ID, x=Abundance, fill=Location), # dat 1的Abundance将被映射到 x pwidth=0.4, stat="identity", orientation="y", # 轴的方向 axis.params=list( axis="x", # 添加图层的轴文本text.angle=-45, # 轴的文字大小 hjust=0 # 调整轴文本的水平位置 ), grid.params=list() # 添加外部条形图的网格线 ) + scale_fill_manual( values=c("#F8766D", "#C49A00", "#53B400", "#00C094", "#00B6EB", "#A58AFF", "#FB61D7"), guide=guide_legend(keywidth=0.5, keyheight=0.5, order=6) ) + theme(#legend.position=c(0.96, 0.5), # 图例位置 legend.background=element_rect(fill=NA), # 图例背景 legend.title=element_text(size=7), # 图例标题大小 legend.text=element_text(size=6), # 图例文本标签大小 legend.spacing.y = unit(0.02, "cm") # 调节y轴图例的距离 ) p5
以上就是关于“怎么使用R包ggtreeExtra绘制进化树”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
边栏推荐
- JS local storage
- JS picture display and hiding cases
- Why are life science enterprises on the cloud in succession?
- subject may not be empty [subject-empty]
- 目前是不是只cdc 监控mysql 可以拿到新增列的数据 sqlserver不行是吧
- Navigator object
- AI时代生物隐私如何保护?马德里自治大学最新《生物特征识别中的隐私增强技术》综述,全面详述生物隐私增强技术
- Use ado Net call stored procedure
- JS position operation
- 西北工业大学遭黑客攻击?双因素认证改变局面!
猜你喜欢
Necessary fault handling system for enterprise network administrator
Volcano成Spark默认batch调度器
电源效率测试
模块五
Volcano devient l'ordonnanceur de lots par défaut Spark
Volcano becomes spark default batch scheduler
DOM (document object model)
Tkde2022: Dialogue recommendation system based on knowledge enhanced sampling
Using alicloud RDS for SQL Server Performance insight to optimize database load - first understanding of performance insight
Vite+web3: referenceerror: process is not defined
随机推荐
时间溯源的系统设计思路
Introduction and download of nine npp\gpp datasets
[computer talk club] Lecture 3: how to raise key issues?
Multi cloud mode is not a "master key"
网络安全审查办公室对知网启动网络安全审查
Flex box flex attribute
通过SCCM SQL生成计算机上一次登录用户账户报告
【Leetcode】旋转系列(数组、矩阵、链表、函数、字符串)
Volcano becomes spark default batch scheduler
优维低代码:构件渲染子构件
企业网络管理员必备的故障处理系统
In depth learning of movement methods
okcc呼叫中心数据操作的效率问题
JS picture switching case
多云模式并非“万能钥匙”
我用sql形式的会出现cdc读取乱序吗
JS pre parsing
建立自己的网站(8)
Ls common parameters
finkcdc支持sqlserver2008么?