基于ggtree中的外部数据集为标签着色

时间:2018-11-02 10:03:53

标签: r tree ggtree

我有一个.tre格式的系统树和随附的数据集。树的确切形式无关紧要,它只是随机的系统发育树。数据集有两列:名称颜色

当绘制这样的树时,我很可能会从随附的数据集中为树添加着色点(两种不同的颜色)。问题是当我使用以下代码时:

ggtree(RANDOMTREE) + geom_tippoint(pch=16, col=RANDOMDATA$color) + geom_tiplab(offset=0.1)

它为点着色,但是颜色当然具有它们在随附数据集中的顺序。

但是我想根据树中物种的名称将颜色与数据集中的颜色进行匹配(它们的格式相同,但顺序不同)。我还没有弄清楚。你能帮我吗?

非常感谢您。

示例代码:

source("https://bioconductor.org/biocLite.R")
biocLite("ggtree")
library(ggtree)

tree<-read.tree(text="(spec1,((spec2,(spec9,(spec3,spec5))),spec8,(spec6,(spec7,spec4))));")
dataset1<-data.frame("name" = c("spec1","spec2","spec3","spec4","spec5","spec6","spec7","spec8","spec9"), "colour" = c("red","red","blue","red","red","blue","blue","red","blue"))

ggtree(tree) + geom_tiplab() + geom_tippoint(pch=16, col=as.factor(dataset1$colour))

我得到的是: wrongly labeled tree

我想得到什么: correctly labeled tree

1 个答案:

答案 0 :(得分:0)

我可以进行正确的分组,但是不能正确地进行着色

p <- ggtree(tree) + geom_tiplab()
p <- p %<+% dataset1 + geom_tippoint(pch=16, aes(col=colour))
p

我以此为参考:https://aschuerch.github.io/posts/2017-04-24-blog-post-1。 软件包的文档不正确。您可以通过切换“红色”和“蓝色”来实现所需的目标:p

它接受颜色的顺序并将其与内置的色标配对。因此,如果标度以(红色,蓝色)开头,而您的序列是(蓝色,红色),则其按该顺序匹配。有道理吗?

edit:安装此软件包是一场噩梦,如果有一个更简单的软件包,例如https://cran.r-project.org/web/packages/data.tree/vignettes/data.tree.html,我建议您尝试其他人。它卸载了我的许多核心软件包,例如dplyr和data.table,它具有大量的依赖项