我正在使用NCBI分类标准的数据来构建系统发育树。这棵树很简单,其目的是显示一些节肢动物之间的关系。 问题在于这棵树看起来很小,我似乎无法使其树枝更长。我还想给一些节点着色(例如:Pancrustaceans),但我不知道如何使用猿来着色。 感谢您的帮助!
library(treeio)
library(ape)
treeText <- readLines('phyliptree.phy')
treeText <- paste0(treeText, collapse="")
tree <- read.tree(text = treeText) ## load tree
distMat <- cophenetic(tree) ## generate dist matrix
plot(tree, use.edge.length = TRUE,show.node.label = T, edge.width = 2, label.offset = 0.75, type = "cladogram", cex = 1, lwd=2)
答案 0 :(得分:3)
这里有一些使用ape
包的指针。我使用的是随机树,因为我们无法访问您的树,但是这些示例应该很容易适应您的问题。如果您提供特定问题的可复制示例,我可以再看一遍。
首先,我制作一棵随机树,添加一些物种名称,并对其进行绘制以显示节点数(包括终端节点和内部节点)
library(ape)
set.seed(123)
Tree <- rtree(10)
Tree$tip.label <- paste("Species", 1:10, sep="_")
plot.phylo(Tree)
nodelabels() # blue
tiplabels() # yellow
edgelabels() # green
然后,要为树的任何节点或边缘着色,我们可以创建颜色向量并将其提供给适当的*labels()
函数。
# using numbers for colors
node_colors <- rep(5:6, each=5)[1:9] # 9 internal nodes
edge_colors <- rep(3:4, each=9) # 18 branches
tip_colors <- rep(c(11,12,13), 4)
# plot:
plot.phylo(Tree, edge.color = edge_colors, tip.color = tip_colors)
nodelabels(pch = 21, bg = node_colors, cex=2)
要仅标记一个节点及其分支,我们可以这样做:
Nnode(Tree)
node_colors <- rep(NA, 9)
node_colors[7] <- "green"
node_shape <- ifelse(is.na(node_colors), NA, 21)
edge_colors <- rep("black", 18)
edge_colors[13:18] <- "green"
plot(Tree, edge.color = edge_colors, edge.width = 2, label.offset = .1)
nodelabels(pch=node_shape, bg=node_colors, cex=2)
没有树,就很难说出如何调整树枝。一种方法是减小笔尖标签的尺寸,以便它们占用更少的空间。另一种方法可能是在保存png或pdf时进行操作。
还有其他方法可以修饰树木,包括ggtree
包。