【问题标题】:floating.pie error while using nodelables from ape package使用ape包中的nodelables时出现floating.pie错误
【发布时间】:2015-05-28 16:27:31
【问题描述】:

在 R 中使用 ace 函数的 ARD 模型时出现错误。错误是

floating.pie.asp(XX[i], YY[i], pie[i, ], radius = xrad[i], col = piecol) 中的错误: floating.pie: x 值必须为非负数

library(ape)
library(phylobase)
tree <- read.nexus("data1.nexus")
plot(tree)
data <- read.csv("phagy_species.csv")
clade.full <- extract.clade(tree, node=91)
plot(clade.full)
clade.1 <- drop.tip(clade.full, "Bar_bre")
clade.2<- drop.tip(clade.1, "Par_pho")
clade.3<- drop.tip(clade.2, "Par_iph")
clade.4<- drop.tip(clade.3, "Eur_ser")
clade.5<- drop.tip(clade.4, "Opo_sym")
clade.6<- drop.tip(clade.5, "Mor_pel")
clade.7<- drop.tip(clade.6, "Aph_hyp")
clade.8<- drop.tip(clade.7, "Ere_oem")
clade.9<- drop.tip(clade.8, "Cal_bud")
clade.10<- drop.tip(clade.9, "Lim_red")
clade.11<- drop.tip(clade.10, "Act_str")
clade.12<- drop.tip(clade.11, "Hel_hec")
clade.13<- drop.tip(clade.12,"Col_dir")
clade.14<- drop.tip(clade.13, "Hyp_pau")
clade.15<- drop.tip(clade.14, "Nym_pol")
clade.16<- drop.tip(clade.15, "Mel_cin")
clade.17<- drop.tip(clade.16,"Apa_iri")
clade.18<- drop.tip(clade.17, "Bib_hyp")
clade.19<- drop.tip(clade.18, "Mar_ors")
clade.20<- drop.tip(clade.19, "Apo_cra")
clade.21<- drop.tip(clade.20, "Pse_par")
clade.22 <- drop.tip(clade.21, "Lep_sin")
clade.23<- drop.tip(clade.22, "Dis_spi")
plot(clade.23)
data2 <- as.numeric(data[,2])
model2 <- ace(data2, clade.23, type="discrete", method="ML", model="ARD")
summary(model2)
d <-logLik(model2)
deviance(model2)
AIC(model2)
plot(clade.23, type="phylogram", cex=0.8, font=3, label.offset = 0.004)
co <- c("red", "blue", "green", "black")
nodelabels(pie = model2$lik.anc, piecol = co, cex = 0.5)

那是我得到错误的时候。如果我使用原始树而不修剪,则没有错误。但是,当我按照自己的要求调整它们时,它就会变成负面的。

这是数据 tree file

data file

【问题讨论】:

  • 我还想指出,您不需要一次只丢一个小费并创建一堆临时树。您可以一步完成所有操作,例如clade &lt;- drop.tip(clade, c("Bar_bre", "Par_pho", "Par_iph", "Eur_ser", "Opo_sym", "Mor_pel", "Aph_hyp", "Ere_oem", "Cal_bud", "Lim_red", "Act_str", "Hel_hec","Col_dir", "Hyp_pau", "Nym_pol", "Mel_cin","Apa_iri", "Bib_hyp", "Mar_ors", "Apo_cra", "Pse_par", "Lep_sin", "Dis_spi"))

标签: r phylogeny ape-phylo


【解决方案1】:

您用于饼图比例的矩阵中包含复数。要查看此内容,请尝试:

class(model2$lik.anc[1,1])

该矩阵的行定义了饼图的比例,它们的总和需要为 1。如果我像这样替换 nodelabels 函数中的饼图矩阵,您的代码会生成一个带有饼图的图:

nodelabels(pie = matrix(0.25, 64, 4), piecol = co, cex = 0.5)

因为现在pie 参数有一个合法矩阵,其中行总和为 1。

至于为什么你在那个矩阵中有复数,我不确定。它可能与您的示例中 ace 产生的所有警告有关。但这是一个完全不同的问题。

【讨论】:

    【解决方案2】:

    我的数据也有同样的问题。我将我的数据放入矩阵中(如 Slow Ioris 建议的那样),然后取消列出该矩阵。

    x <- matrix(data=c(model2$lik.anc[,1],model2$lik.anc[,2],model2$lik.anc[,3],model2$lik.anc[,4]))
    plotTree(tree,ftype="i",label.offset = 0.02)
    nodelabels(pie = unlist(x))
    

    【讨论】:

      【解决方案3】:

      对于其他在清除其数据的可想象部分后也遇到相同问题的人:当您向pie 提供 data.frame 而不是矩阵时,nodelabels 函数会给出相同的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-07
        • 2011-10-01
        • 2015-05-19
        • 2016-04-23
        • 2014-04-22
        • 1970-01-01
        • 2012-02-12
        • 2022-01-20
        相关资源
        最近更新 更多