在系统发育祖先状态重建中指定颜色
Specifying colours in phylogenetic ancestral state reconstruction
我正在尝试指定我的祖先状态重建分析中使用的颜色,这样我就可以在其他图表中使用相同的颜色相同的数据。但是,当我使用 ape 中的 nodelabels
时,我指定的颜色与显示的颜色不一致。有人知道为什么吗?以及如何解决它?请参阅下面的问题示例:
rm(list = ls())
library(phytools)
library(ape)
library(RColorBrewer)
set.seed(1237)
tree = rtree(50)
plot(tree)
variable = rTraitDisc(tree, k = 5)
names(variable) = tree$tip.label
cols = data.frame(type = levels(variable),
color = I(brewer.pal(nlevels(variable), name = 'Set1')))
cols_vector = cols$color
names(cols_vector) = cols$type
fit = ace(x = variable, phy = tree, type = 'discrete')
nodelabels(node=1:tree$Nnode+Ntip(tree),
pie=fit$lik.anc, piecol=cols_vector)
tiplabels(pie=to.matrix(variable,sort(unique(variable))),piecol=cols_vector)
tiplabels(text = variable)
给出图像:
大多数颜色排列正常,但 E 显示为紫色,但代码为 #FF7F00(橙色)。这段代码举例说明:
t = table(variable)
barplot(t, col = cols_vector[match(names(t), names(cols_vector))])
如有任何建议,我们将不胜感激。
问题出在命令 to.matrix(variable,sort(unique(variable)))
中。鉴于您的种子,没有提示具有值 D,因此如果您构建一个矩阵,其中的列代表唯一值,则只会使用调色板中的前四种颜色。
head(to.matrix(variable,sort(unique(variable))))
A B C E
t47 1 0 0 0
t14 1 0 0 0
t2 1 0 0 0
t19 1 0 0 0
t29 1 0 0 0
t5 1 0 0 0
将 seq =
参数替换为所有可能特征值的向量应该可以解决颜色不匹配的问题。
tiplabels(pie = to.matrix(x = variable, seq = LETTERS[1:5]), piecol = cols_vector)
我正在尝试指定我的祖先状态重建分析中使用的颜色,这样我就可以在其他图表中使用相同的颜色相同的数据。但是,当我使用 ape 中的 nodelabels
时,我指定的颜色与显示的颜色不一致。有人知道为什么吗?以及如何解决它?请参阅下面的问题示例:
rm(list = ls())
library(phytools)
library(ape)
library(RColorBrewer)
set.seed(1237)
tree = rtree(50)
plot(tree)
variable = rTraitDisc(tree, k = 5)
names(variable) = tree$tip.label
cols = data.frame(type = levels(variable),
color = I(brewer.pal(nlevels(variable), name = 'Set1')))
cols_vector = cols$color
names(cols_vector) = cols$type
fit = ace(x = variable, phy = tree, type = 'discrete')
nodelabels(node=1:tree$Nnode+Ntip(tree),
pie=fit$lik.anc, piecol=cols_vector)
tiplabels(pie=to.matrix(variable,sort(unique(variable))),piecol=cols_vector)
tiplabels(text = variable)
给出图像:
大多数颜色排列正常,但 E 显示为紫色,但代码为 #FF7F00(橙色)。这段代码举例说明:
t = table(variable)
barplot(t, col = cols_vector[match(names(t), names(cols_vector))])
如有任何建议,我们将不胜感激。
问题出在命令 to.matrix(variable,sort(unique(variable)))
中。鉴于您的种子,没有提示具有值 D,因此如果您构建一个矩阵,其中的列代表唯一值,则只会使用调色板中的前四种颜色。
head(to.matrix(variable,sort(unique(variable))))
A B C E
t47 1 0 0 0
t14 1 0 0 0
t2 1 0 0 0
t19 1 0 0 0
t29 1 0 0 0
t5 1 0 0 0
将 seq =
参数替换为所有可能特征值的向量应该可以解决颜色不匹配的问题。
tiplabels(pie = to.matrix(x = variable, seq = LETTERS[1:5]), piecol = cols_vector)