当前位置:网站首页>怎么使用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绘制进化树”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
边栏推荐
- Volcano成Spark默认batch调度器
- 多云模式并非“万能钥匙”
- 論文解讀(SR-GNN)《Shift-Robust GNNs: Overcoming the Limitations of Localized Graph Training Data》
- 为什么 useEvent 不够好
- Why useevent is not good enough
- UnityShader 世界坐标不随模型变化
- Interpreting harmonyos application and service ecology
- 云服务器类型怎么选,要考虑什么?
- Navigator object
- 1: Mosaic of 100W basic geographic information data
猜你喜欢

Freeswitch uses origin to dialplan

电源效率测试

History object

华为机器学习服务语音识别功能,让应用绘“声”绘色

R语言 4.1.0软件安装包和安装教程

Source code analysis of ArrayList

Intel and Microsoft give full play to the potential energy of edge cloud collaboration to promote the large-scale deployment of AI

为什么生命科学企业都在陆续上云?

Apifox与其他接口开发工具的博弈

Volcano成Spark默认batch调度器
随机推荐
Apifox与其他接口开发工具的博弈
实时渲染:实时、离线、云渲染、混合渲染的区别
Navigator object
Introduction and download of nine npp\gpp datasets
Interpreting harmonyos application and service ecology
上位机与MES对接的几种方式
Differences between get and post request modes
干货 | 新手经常忽略的嵌入式基础知识点,你都掌握了吗?
智能合约安全审计入门篇 —— delegatecall (2)
【Leetcode】旋转系列(数组、矩阵、链表、函数、字符串)
System design idea of time traceability
Volcano devient l'ordonnanceur de lots par défaut Spark
一文理解OpenStack网络
Application scenarios of channel of go question bank · 11
华为机器学习服务语音识别功能,让应用绘“声”绘色
Interprétation de la thèse (SR - gnn) Shift Robust GNNS: Overcoming the Limits of Localized Graph Training Data
小白请教下各位大佬,cdc抽取mysql binlog是严格顺序的吗
Introduction and tutorial of SAS planet software
JS deep understanding of functions
Development of NFT dual currency pledge liquidity mining system