6

我正在尝试使用 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 值的顺序,但我自己无法弄清楚。谢谢。

4

1 回答 1

6

正如@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) 

它输出

在此处输入图像描述

于 2015-09-07T20:48:38.117 回答