【问题标题】:Label and color leaf dendrogram (phylogeny) in R using ape packageR中使用ape包的标签和颜色叶树状图(系统发育)
【发布时间】:2013-09-22 05:35:26
【问题描述】:

在之前的帖子 (Label and color leaf dendrogram in r) 之后,我有一个后续问题。

我的问题与提到的帖子类似,但我想知道是否可以使用猿来完成(例如,plot(as.phylo(fit), type="fan", labelCol),因为它具有更多类型的系统发育。

提到的帖子问题是:

  • 如何在叶子标签中显示组码(而不是样本号)?

  • 我希望为每个代码组分配一种颜色并根据它为叶子标签着色(可能会发生它们不在同一个进化枝中,这样我可以找到更多信息)?

代码示例是:

sample = data.frame(matrix(floor(abs(rnorm(20000)*100)),ncol=200))
groupCodes <- c(rep("A",25), rep("B",25), rep("C",25), rep("D",25))

## make unique rownames (equal rownames are not allowed)
rownames(sample) <- make.unique(groupCodes)

colorCodes <- c(A="red", B="green", C="blue", D="yellow")


## perform clustering
distSamples <- dist(sample)
hc <- hclust(distSamples)

## function to set label color
labelCol <- function(x) {
  if (is.leaf(x)) {
    ## fetch label
    label <- attr(x, "label")
    code <- substr(label, 1, 1)
    ## use the following line to reset the label to one letter code
    # attr(x, "label") <- code
    attr(x, "nodePar") <- list(lab.col=colorCodes[code])
  }
  return(x)
}

## apply labelCol on all nodes of the dendrogram
d <- dendrapply(as.dendrogram(hc), labelCol)

plot(d)

【问题讨论】:

    标签: r plot dendrogram phylogeny dendextend


    【解决方案1】:

    该问题的另一个解决方案是使用新的circlize_dendrogram 函数,它结合了两个包:circlize 和dendextend。您首先需要安装它们:

    install.packages("circlize")
    devtools::install_github('talgalili/dendextend')
    

    这是要运行的代码:

    # YOUR CODE
    sample = data.frame(matrix(floor(abs(rnorm(20000)*100)),ncol=200))
    groupCodes <- c(rep("A",25), rep("B",25), rep("C",25), rep("D",25))
    
    ## make unique rownames (equal rownames are not allowed)
    rownames(sample) <- make.unique(groupCodes)
    
    colorCodes <- c(A="red", B="green", C="blue", D="yellow")
    
    
    ## perform clustering
    distSamples <- dist(sample)
    hc <- hclust(distSamples)
    
    #--------------
    # NEW CODE
    
    dend <- as.dendrogram(hc )
    library(dendextend)
    labels_colors(dend) <- colorCodes 
    # plot(dend)
    dend <- color_branches(dend, k=4)
    
    # plot the radial plot
    par(mar = rep(0,4))
    # circlize_dendrogram(dend, dend_track_height = 0.8) 
    circlize_dendrogram(dend) 
    

    这是结果图:

    【讨论】:

      【解决方案2】:

      看看?"plot.phylo":

      library("ape")
      plot(as.phylo(hc), tip.color=colorCodes[substr(rownames(sample), 1, 1)], type="fan")
      

      【讨论】:

        猜你喜欢
        • 2013-09-19
        • 1970-01-01
        • 2013-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-13
        相关资源
        最近更新 更多