首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R使用外部数据注释系统发育树?

R使用外部数据注释系统发育树?
EN

Stack Overflow用户
提问于 2016-05-04 02:53:42
回答 1查看 675关注 0票数 1

我正在使用Bioconductor的ggtree包绘制两个系统发育树。它的工作原理基本上类似于ggplot2,我想修改tip标签的外观,以匹配外部CSV文件设置的类。

我有一个multiPhylo对象,它包含相同50个基因的两个不同集群(在这个例子中,我们假设只有6个)。当我评估multitree[[1]]$tip.labelmultitree[[2]]$tip.label时,它们都以相同的顺序给出了相同的列表,所以我知道虽然曲线图的显示方式不同,但基因仍然以相同的顺序存储。

代码语言:javascript
复制
library(ggtree)
library(ape)

mat <- as.dist(matrix(data = rexp(200, rate = 10), nrow = 6, ncol = 6))
nj.tree <- nj(mat)  ### Package ape
hclust.tree <- as.phylo(hclust(mat))
multitree <- c(nj.tree, hclust.tree)

我想绘制这些树,然后根据现有文献,根据5个类别(A、B、C、D和E)中的哪一个,用外部数据对它们进行注释。

代码语言:javascript
复制
write.csv(multitree[[1]]$tip.label, "Genes.csv")

我使用这个命令以正确的顺序创建了每个基因的CSV文件(不确定这是否相关)。然后,我在每个基因旁的栏中手动输入相应的班级字母。它看起来像这样:

代码语言:javascript
复制
Gene    Class
1       A
2       A
3       D
4       C
5       B
6       E

诸若此类。

我想要注释树上的提示标签颜色,使其与外部CSV表中定义的颜色相对应。我知道它看起来有点像geom_tiplab(aes(color=something something something)),但我不知道如何让它读取我的CSV中的数据,而不是multitree中的数据。下面是我的ggtree命令

代码语言:javascript
复制
myTree <- ggtree(multitree[[i]], aes(x, y)) + 
    ggtitle(names(multitree)[i]) + 
    geom_tiplab() +   ### What I want to annotate with color
    theme_tree2() + 
    coord_fixed(ratio = 0.5) 
print(myTree)         ###Occurs within a for loop, forces ggplot output to display
EN

回答 1

Stack Overflow用户

发布于 2016-05-12 17:14:42

为表中的类名创建一个颜色矢量。

代码语言:javascript
复制
g <- read.csv("Genes.csv")
cols <- rainbow(nlevels(g$Class))

# Function to identify class color for a certain gene 
findCol <- function(x){
    col <- switch(as.character(x), A=cols[1], B=cols[2], C=cols[3], D=cols[4], E=cols[5])
    return(col)
}
col.vect <- sapply(g$Class, findCol)

geom_tiplab()函数中使用此向量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37012210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档