r - 如何在ggtree中按组为树的提示着色?
问题描述
如何根据样本所属的组简单地为我的树的尖端着色?
nwk <- system.file("extdata", "sample.nwk", package="treeio")
tree <- read.tree(nwk)
group_1 <- rep("1.1.1", 5)
group_2 <- rep("1.1.2", 3)
group_3 <- rep("1.2", 2)
group_4 <- rep("1.2.1", 2)
group_5 <- "1.2"
meta_data <- data.frame(ID = LETTERS[1:13],
group = c(group_1, group_2, group_3, group_4, group_5))
我如何处理元数据以使提示显示为彩色圆圈或正方形(或其他形状)并根据这些颜色创建图例?
我在 ggtree 文档中看到了类似的树,但是它们的代码非常复杂(例如参见https://guangchuangyu.github.io/ggtree-book/chapter-ggtree.html中的第 4.3.7.3 节)。
此外,我无法重现这些示例,因为它们依赖于他们无处明确可用的元数据:
treefile <- "RAxML_bestTree.Aln_All_H3.nwk"
tipseqfile <- "Aln_All_H3_filted.fas"
例如。
必须有一种简单的方法来使用此元数据为提示着色。
解决方案
您可以将树转换为 atibble
然后加入meta_data
. 然后你转换回一棵树并为美学添加颜色geom_tiplab
x <- full_join(as_tibble(tree), meta_data, by = c("label" = "ID"))
tree2 <- as.treedata(x)
ggtree(tree2) + geom_tiplab(aes(color = group))
编辑:图例可以用theme_tree
. 我会把它留给你
推荐阅读
- python - 运行 Fuzzywuzzy 字符串匹配器脚本的问题
- typescript - Typescript 函数重载不适用于联合类型案例
- java - 在java中使用正确的数据结构返回数组中的最高元素
- android - Unity 视频播放器在 whatsapp 通知上崩溃
- ios - 当应用程序被杀死或未运行时,如何从 IOS 应用程序的推送通知中打开特定视图?
- sap - SAP Vora 1.4 工作者停止
- tensorflow - 使用较小的 CNN 在 Keras 中内存不足
- c++ - 创建新项目时“为防止加载设计器之前可能的数据丢失,必须解决以下错误”
- latex - 未编号的章节标题有一种奇怪的行为
- vhdl - VHDL如何在一句话中使用多个“and”和“or”?