【问题标题】:Different color for different cluster in a tree using adegenet R package使用adegenet R包的树中不同簇的不同颜色
【发布时间】:2016-03-27 04:34:42
【问题描述】:

我正在使用 R 包 adegenet 绘制邻接树。

在我的文件中,我有 20,000 列和 500 行。行对应于个人。我的第一列是人口 ID,第二列是个人 ID。列包含值 0,1 和 2。我可以用一种颜色绘制一棵树,但根据人口,我希望每个集群都是不同的颜色。

这就是我所做的,如果“dat”是我的数据文件,那么

D<-dist(as.matrix(dat))
tre<-nj(D)
plot(tre, type = "unr", show.tip.lab = TRUE, cex=0.3, font=1, edge.col="Blue")

如果我尝试edge.col=c("red","green","blue") 我会遇到以下错误:

Error in if (use.edge.length) unrooted.xy(Ntip, Nnode, z$edge, z$edge.length,  : 
  argument is not interpretable as logical

不胜感激!

【问题讨论】:

    标签: r plot phylogeny


    【解决方案1】:

    您的示例应该是可重现的,以便更容易帮助和重现您的问题。请参阅此帖子以获取 more details。我正在尝试使用iris,它就像一个魅力。顺便说一句,我认为这里不需要adegenetplot 实际上是来自包apeplot.phylo),所有其他功能要么是内置的,要么来自ape)。

    文档 (?plot.phylo) 说:

    edge.col 一个模式字符向量,给出用于绘制绘制系统发育分支的颜色。这些被认为与 phy 的组件边缘具有相同的顺序。如果给定的颜色少于边缘的长度,则颜色被回收。

    ape 保留顺序或行,您可以使用factor 来索引颜色向量,因此使用iris 的可重现示例可能是:

    library(ape)
    D <-dist(as.matrix(iris[, 1:4]))
    tree <- nj(D)
    plot(tree, type = "unr", show.tip.lab = TRUE, cex=0.3, font=1, 
               edge.col=c("red","green","blue")[iris$Species])
    

    这是你想要的吗?

    【讨论】:

    • 谢谢@Vincet!这就是我一直在寻找的。我想知道是否有一种方法可以按名称选择性地删除样本?一些样本正在毁掉这棵树。
    猜你喜欢
    • 2021-10-22
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2020-06-04
    • 2018-01-06
    • 2018-02-22
    • 2020-02-15
    • 2011-10-12
    相关资源
    最近更新 更多