我有一个.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
答案 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,它具有大量的依赖项