我有一个系统发育树,我在R上绘制。我想根据我的物种的顺序为我的尖端边缘着色。如何单独选择每个尖端标签的颜色? 我先试了一下:
EdgeCols <- rep("black", Nedge(tree))
EdgeCols[which.edge(tree, tree$edge[1]) ] <- "red"
plot( tree, space = 30, assoc = AMat,
show.tip.label = T, gap = 1, length.line = 0, edge.color =EdgeCols1)
但我不会对这条边缘的颜色有任何改变。
谁能告诉我问题出在哪里?
答案 0 :(得分:1)
我不确定你要做什么,但这里是如何使用ape
包为系统发育的特定边缘着色。这是为所有边着色的代码:
library(ape)
# Simulate tree
ntax <- 20
tree <- rcoal(ntax)
# Color branches
colors <- rainbow(Nedge(tree))
plot(tree, edge.color=colors)
为所有终端分支着色:
# Color terminal branches
colors2 <- rep("black", Nedge(tree))
colors2[which(tree$edge[,2] %in% 1:20)] <- rainbow(ntax)
plot(tree, edge.color=colors2)
我还要指出您的代码中存在明显的问题:
tree$edge[1]
,但tree$edge
是一个矩阵,因此您无法使用一个值对其进行索引。which.edge
函数需要一个提示向量,并返回由这些提示定义的单系分支内的所有边的索引。看起来你似乎试图给它一个单一的价值,这没有任何意义。EdgeCols
,但是在您的情节函数中,您有EdgeCols1
。