1

我有一个在 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)

但我不会在这个边缘的颜色上有任何变化。

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

4

1 回答 1

3

我不确定您要做什么,但这里是如何用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], buttree$edge是一个矩阵,所以你不能用一个值来索引它。
  2. which.edge函数需要一个尖端向量,并返回由这些尖端定义的单系进化枝内所有边缘的索引。似乎您正试图给它一个单一的值,这没有任何意义。
  3. 您定义EdgeCols,但随后在您的绘图功能中您拥有EdgeCols1.
于 2016-05-10T05:07:31.110 回答