R包ggtreeExtra绘制进化树

目录
  • 引言
  • 绘图示例
    • 1、下载安装ggtreeExtra包
    • 2、加载依赖包
    • 3、设置工作目录
    • 4、数据来源
    • 5、获取数据
    • 6、绘制树状图
    • 7、获取数据集绘制图
      • a、绘制点图层
      • b、绘制热图层
      • c、绘制热图层
      • d、绘制柱状图层

引言

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绘制进化树的详细内容,更多关于R包ggtreeExtra绘制进化树的资料请关注我们其它相关文章!

(0)

相关推荐

  • R包ggtreeExtra绘制进化树

    目录 引言 绘图示例 1.下载安装ggtreeExtra包 2.加载依赖包 3.设置工作目录 4.数据来源 5.获取数据 6.绘制树状图 7.获取数据集绘制图 a.绘制点图层 b.绘制热图层 c.绘制热图层 d.绘制柱状图层 引言 ggplot2提供的geom_tile图层可以画热图了,ggplot2的geom_point或者ggstar的geom_star可以绘制点图层.为了扩展ggtree在点和布局中的系统发育树的外环上呈现相关数据,开发的ggtreeExtra包提供了一个函数,geom_f

  • R语言ComplexHeatmap绘制复杂热图heatmap

    目录 一 载入R包 数据 1.1 载入ComplexHeatmap包,数据 1.2 绘制最简单的热图 二 常见“表型”注释 读入注释文件 2.1 添加注释,且设置颜色 三 添加“块”注释 3.1 k-means指定K个数 3.2 先验知识知道样本分为几个簇 3.3 根据富集结果添加行注释 四 目标基因分析 4.1 标签展示目标基因 4.2 绘制目标基因热图 ComplexHeatmap|绘制单个热图介绍了单个热图绘制的内容 一 载入R包 数据 1.1 载入ComplexHeatmap包,数据 为

  • R包制作后出现not available for错误问题解决解决

    目录 解决方法 NAMESPACE 文件最终形态 有一段时间没有做过 R 包了今天在尝试制作 R 包时,制作.生成.载入都没有遇到问题,但在载入 R 包内用 Rcpp 写得函数时出现了如下问题(做的包名叫 RI,调用的函数也是 RI): Error in .Call("_RI_RI", PACKAGE = "RI", X, Y) : "_RI_RI" not available for .Call() for package "RI&q

  • R语言入门使用RStudio制作包含Rcpp代码的R包

    目录 1. 创建项目 2. 修改一些文件 3. 打包 4. 使用Eigen或其它依赖库会出现的问题 前面博客中有提及,当我们进行模拟想要再次进行提速时,通常都会使用Rcpp将我们的R代码改成C++代码.具体Rcpp的使用可参考博客:Rcpp入门R代码提速方法过程,R语言学习RcppEigen进行矩阵运算. 平时在我们使用的时候,直接使用Rcpp::sourceCpp()就可以直接将我们的C++代码中的函数进行导入,这不会遇到什么问题,但如果我们想要使用snowfall进行并行时就不能再这样做了.

  • R语言服务器安装R包实现过程

    目录 通过网络安装 通过本地安装 在服务器上使用R装包分为两种情况,一种是常规通过网络来进行安装,另一种是直接将R包拖动到服务器的指定路径下在进行本地安装,两者的安装方式是不一致的. 通过网络安装 这种安装方式相对简单,首先进R,然后使用下述命令进行包的安装: install.packages("package_name") 包名注意加双引号!包名注意加双引号!包名注意加双引号!(重要的事情说三遍) 之后会弹出一个界面需要进行镜像的选择,这时候我们通常会使用国内的镜像,也就是4,当然还

  • 使用R语言绘制散点图结合边际分布图教程

    目录 1. 使用ggExtra结合ggplot2 1)传统散点图 2)密度函数 3)直方图 4)箱线图(宽窄的显示会有些问题) 5)小提琴图(会有重叠,不建议使用) 6)密度函数与直方图同时展现 2. 使用cowplot与ggpubr 1)重绘另一种散点图 2)有缝拼接 3)无缝拼接 参考 主要使用ggExtra结合ggplot2两个R包进行绘制.(胜在简洁方便)使用cowplot与ggpubr进行绘制.(胜在灵活且美观) 下面的绘图我们均以iris数据集为例. 1. 使用ggExtra结合gg

  • R语言学习VennDiagram包绘制韦恩图示例

    目录 引言 一 需要安装和导入的包 二 使用函数及参数 三 知道各个数据集的个数以及重叠(交叉)的个数 2.1 两个已知数据集的韦恩图 2.2 三个已知数据集的韦恩图 四 根据数据集合绘制韦恩图 4.1 四个数据集合 4.2 五个数据集合 引言 本版块会持续分享一些常用的结果展示的图形. 在得到数据之后,我们经常会用到维恩图来展示各个数据集之间的重叠关系.本文简单的介绍R语言中的VennDiagram包绘制数据集的维恩图. 一 需要安装和导入的包 install.packages("VennDi

  • R语言-绘制双坐标图直方图与折线的结合方式

    看代码吧~ par(mar = c(5, 5, 3, 4)+0.1) #似乎是设置图片位置 bar<-barplot(gu[1:22,6],xlim=c(0.5,26),ylim=c(0,200000),ylab="交易量", col="blue",col.axis="blue",col.lab="blue") mtext(c(1:22),side=1,line=1,at=bar,cex=0.8,col="bl

  • R语言编程学习绘制动态图实现示例

    在讨论级数时,可能需要比对前 n n n项和的变化情况,而随着 n n n的递增,通过动态图来反映这种变化会更加直观,而通过R语言绘制动态图也算是一门不那么初级的技术,所以在此添加一节,补充一下R语言的绘图知识. 绘图需要用到ggplot2,为多张图加上时间轴则需要用到gganimate,为了让这些动态图片被渲染,需要用到av.此外,ggplot2绘图需要输入的数据格式为tibble. install.packages("ggplot2") install.packages("

  • R绘制漂亮的中国地图的实现示例

    目录 ggmap maps + mapdata ggplot2 + mapdata ggrepel ggmap 说起用R绘制中国地图,很多有经验的老司机肯定会推荐ggmap,无论是里面自带的各种地区绘图.经纬度查询以及可以与ggplot无缝衔接绘制地区统计图,这都是R中其它绘制地图所难以超越的优势. 但奈何R经常无法获取ggmap里面的地图.当我想导入中国地图时,就会出现如下图所示的问题. 由于数模所需,为了硬着头皮进行绘制,哪怕丑一些,所以探索出了下面两种绘制中国地图的方法. maps + m

随机推荐