系统发育树尖颜色

时间:2015-12-04 13:14:57

标签: r phylogeny

我有一个系统发育树,我在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)

但我不会对这条边缘的颜色有任何改变。

谁能告诉我问题出在哪里?

1 个答案:

答案 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)

我还要指出您的代码中存在明显的问题:

  1. 您有tree$edge[1],但tree$edge是一个矩阵,因此您无法使用一个值对其进行索引。
  2. which.edge函数需要一个提示向量,并返回由这些提示定义的单系分支内的所有边的索引。看起来你似乎试图给它一个单一的价值,这没有任何意义。
  3. 您定义EdgeCols,但是在您的情节函数中,您有EdgeCols1