【问题标题】:Dendrogram edge (branch) colors to match tip (leaf) colors (ape package)树状图边缘(分支)颜色匹配尖端(叶子)颜色(猿包)
【发布时间】:2015-12-02 23:30:14
【问题描述】:

我正在尝试使用 ape 包中的 plot.phylo 命令为 R 中系统发育类型图的边缘(线)添加颜色。此示例适用于“扇形”类型图,但我希望该方法与“系统图类型”或其他类型相同。

library('ape')
hc <- hclust(dist(USArrests), "ave")
plot(as.phylo(hc), type="fan")

tip.color 选项结合 cutree 命令可以根据一组组为提示(标签)添加颜色。

hc.cuts <- cutree(hc, k=5)
plot(as.phylo(hc), type="fan", tip.color=rainbow(5)[hc.cuts])

edge.color 选项定义边缘的颜色,但在需要多种颜色时不以登录方式。

plot(as.phylo(hc), type="fan", tip.color=rainbow(5)[hc.cuts], edge.color=rainbow(5)[hc.cuts])

但是,一旦树状图的该分支用于给定组,我希望边缘与终端尖端颜色匹配。在给定的示例中,对于红色和蓝色组,第一级边缘将保持黑色(因为它朝向两个组:红色和蓝色),但超出此范围的边缘将与最终的尖端颜色相同。

我怀疑关键在于找出 as.phylo 对象中 $edge 值的顺序,但我自己无法弄清楚。谢谢。

【问题讨论】:

  • 如果您不太可能得到满意的答案,我想让您知道还有dendextend 包和ggdendro 包,可能是其中之一这两个可以帮助你。它们也都很新。
  • 嗨 Maj,Andrie 的 ggdendro 是第一个帮助在 ggplot2 中绘制树状图的软件包。它的局限性在于它没有考虑树的分支/节点/叶子的各种图形参数。 dendextend 有一个名为“as.ggdend”的函数(它实际上是 ggdendro 的一个分支),它确实考虑了树的更多图形参数。您可以在这里查看更多信息:cran.r-project.org/web/packages/dendextend/vignettes/…

标签: r dendrogram phylogeny dendextend


【解决方案1】:

正如@maj 在评论中建议的那样,如果您不介意使用该软件包,dendextend 可以为您提供帮助。它非常灵活,并且有大量的文档和插图。

这是一个从dendextend FAQ 改编的示例。

# install.packages("dendextend")
# install.packages("circlize")

library(dendextend)
library(circlize)

hc <- hclust(dist(USArrests))
dend <- as.dendrogram(hc)

num_clades <- 5

dend <- dend %>% 
  color_branches(k=num_clades, col=rainbow) %>% 
  color_labels(k=num_clades, col=rainbow)

par(mar = rep(0, 4))
circlize_dendrogram(dend, dend_track_height = 0.8) 

输出

【讨论】:

  • 正是我想要的,谢谢。我不知道“dendextend”包。可爱!
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
相关资源
最近更新 更多