我正在使用Bioconductor的ggtree包绘制两个系统发育树。它的工作原理基本上类似于ggplot2,我想修改tip标签的外观,以匹配外部CSV文件设置的类。
我有一个multiPhylo对象,它包含相同50个基因的两个不同集群(在这个例子中,我们假设只有6个)。当我评估multitree[[1]]$tip.label和multitree[[2]]$tip.label时,它们都以相同的顺序给出了相同的列表,所以我知道虽然曲线图的显示方式不同,但基因仍然以相同的顺序存储。
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)中的哪一个,用外部数据对它们进行注释。
write.csv(multitree[[1]]$tip.label, "Genes.csv")我使用这个命令以正确的顺序创建了每个基因的CSV文件(不确定这是否相关)。然后,我在每个基因旁的栏中手动输入相应的班级字母。它看起来像这样:
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命令
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发布于 2016-05-12 17:14:42
为表中的类名创建一个颜色矢量。
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()函数中使用此向量。
https://stackoverflow.com/questions/37012210
复制相似问题