如何结合系统进化树和热图?

时间:2019-05-21 10:57:12

标签: r heatmap phylogeny ggtree

我需要结合系统树和热图,因此我一直在尝试通过在R中使用ggtree和phytools软件包来做同样的事情。但是,我没有成功。 我的数据集如下所示,

((org1:0.03398193,org2:0.07721021)0.7400:0.00589058,org3:0.09199544,org4:0.09205519);
data.csv
x   x1  x2  x3  x4  x5
org1    50  20  40  70  50
org2    10  15  60  78  20  
org3    40  50  40  70  20
org4    80  50  40  20  30

以下教程采用了这些代码, http://www.randigriffin.com/2017/05/11/primate-phylogeny-ggtree.html 代码如下,

tree = read.tree(text = "org1:0.03398193,org2:0.07721021)0.7400:0.00589058,org3:0.09199544,org4:0.09205519);)
d = data.frame(read.csv("data.csv"))
traits <- data.frame(d, fastBM(tree))
p8 <- ggtree(tree) +  xlim(0, 125) + geom_tiplab(size=2, offset=17)
p9 <-  gheatmap(p8, traits, offset=0.2, width=0.2, low="white", high="black", colnames_position = "top", font.size=2)

当我遵循相同的代码而没有任何更改时,它可以很好地工作。但是,当我尝试使用数据时,它显示错误。我不知道如何通过使用fastBM将树与数据文件结合在一起。我想代替fastBM,我应该使用其他功能。请帮我做同样的事情。

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,您应该把兰迪·格里芬(Randi Griffin)在他的帖子中提出的所有论点都抛弃,这确实使您的陈述错误。

您将需要这些软件包:

library(ape)
library(dplyr)
library(phytools)

# install from Bioconductor
source("https://bioconductor.org/biocLite.R")
biocLite("ggtree")

library(ggtree)


tree <- read.tree(text = "(org1:1, org2:1, (org3:0.15, org4:0.15):0.8500);")
traits <- data.frame(fastBM(tree, nsim=5))

plot(tree)

p8 <- ggtree(tree) +
  geom_tiplab(size=2) 

# add heatmap
p9 <-  gheatmap(p8,
                traits,
                offset=0.2, low="white", high="black", colnames_position = "top", font.size=2)

p9

该建议适用于具有相同分支长度的树。但它也适用于不同的长度。实际上,在他的示例中,他放置xlim(0, 125)是因为其边缘长度最多为40,但在您的示例中,边缘长度较小。因此最好保留R函数以找到图形的最佳极限。

使用以下格式“,”的数据将更易于通过R导入:

x,x1,x2,x3,x4,x5
org1,50,20,40,70,50
org2,10,15,60,78,20  
org3,40,50,40,70,20
org4,80,50,40,20,30

此代码用于导入数据:

df <- read_csv("stack.txt")
df <- as.data.frame(df)
rownames(df) <- df$x
df <- df[,-1]

您只需要在traits中更改df,因为您具有正确的行和列名称。

p8 <- ggtree(tree) +
  geom_tiplab(size=2) 


# add heatmap
p9 <-  gheatmap(p8,
                df,
                offset=0.2, low="white", high="black", colnames_position = "top", font.size=2)

p9

您可能会看到以下地址的猿包小插图,以了解如何手工构建,就像您想要R中的data.tree对象一样:

https://cran.r-project.org/web/packages/ape/index.html

它将为您的其余工作提供帮助,也将为我们提供帮助。

您的问题代码暂时不正确,我们不知道您想要什么树。