查看原文
其他

facet_plot: 关联数据和进化树的通用方法

2017-09-04 Y叔 biobabble

ggtree 提供gheatmap 可视化热图和 msaplot 可视化多重序列比对,并且和进化树关联起来。但这远远不够,我们有太多的数据要可视化且与进化树关联,以便于我们解释结果或者发现规律。比如 dotplot 画 SNP 位点 (e.g. using geom_point(shape='|')), barplot 画trait values (e.g. using geom_barh(stat='identity')) 等等。

为了让不同的数据可以和进化树关联起来,我实现了facet_plot函数,它接收geom函数去画一个数据框,然后在额外的panel展示出来,当然数据会自己按照进化树的拓扑结构重排。

tr <- rtree(30) p <- ggtree(tr) d1 <- data.frame(id=tr$tip.label, location=sample(c("GZ", "HK", "CZ"), 30, replace=TRUE)) p1 <- p %<+% d1 + geom_tippoint(aes(color=location)) d2 <- data.frame(id=tr$tip.label, val=rnorm(30, sd=3)) p2 <- facet_plot(p1, panel="dot", data=d2, geom=geom_point,                aes(x=val), color='firebrick') + theme_tree2()

ggplot2中多半的geom是画垂直的图形对象,但做为和进化树关联的图,我们需要水平的图形对象,ggstance提供了许多水平版本的geom函数:

  • geom_barh()

  • geom_histogramh()

  • geom_linerangeh()

  • geom_pointrangeh()

  • geom_errorbarh()

  • geom_crossbarh()

  • geom_boxploth()

  • geom_violinh()


这样我们就可以把barplot, boxplot等和进化树关联起来可视化了,可以应对不同数据的可视化需求:

library(ggstance) d3 <- data.frame(id = rep(tr$tip.label, each=2),                  value = abs(rnorm(60, mean=100, sd=50)),                  category = rep(LETTERS[1:2], 30)) p3 <- facet_plot(p2, panel = 'Stacked Barplot', data = d3,                geom = geom_barh,                mapping = aes(x = value, fill = as.factor(category)),                stat='identity' )

d4 = data.frame(id=rep(tr$tip.label, each=20),                val=as.vector(sapply(1:30, function(i)                                rnorm(20, mean=i)))                )                 p4 <- facet_plot(p3, panel="Boxplot", data=d4, geom_boxploth,            mapping = aes(x=val, group=label, color=location))

ggbio一起可以画genomic features

这个函数写在ggjoy之前,因为facet_plot函数设计的通用性,ggjoy出来之后,直接就可以使用。

电梯


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存