gpt4 book ai didi

r - 更改 plot.dendrogram 中的叶子颜色,就像包 ape 的 plot.phylo

转载 作者:行者123 更新时间:2023-12-03 10:03:11 25 4
gpt4 key购买 nike

我正在尝试以与使用包“ape”绘制树时相同的“样式”绘制凝聚聚类(UPGMA 与 Agnes)的结果。我在下图中包含的一个简单示例
Figure 1. A simple example of the final output required

关键问题是我希望能够根据叶子标签中的 a 图案为树状图的叶子着色。我尝试了两种方法:要么使用 hc2Newick或者我使用了 Joris Meys 在对 Change Dendrogram leaves 的回答中提出的代码.两者都没有给出令人满意的输出。可能我也不完全理解树状图的构建方式。 abundance.agnes.ave 的 ASCII 保存对象(从运行的 agnes 中存储)可以在 https://www.dropbox.com/s/gke9qnvwptltkky/abundance.agnes.ave 上找到.

当我使用第一个选项(来自 bioconductor 的 hc2Newick 包中的 ctc)时,我在使用此代码时得到下图:

write(hc2Newick(as.hclust(abundance.agnes.ave)),file="all_samples_euclidean.tre")
eucltree<-read.tree(file="all_samples_euclidean.tre")
eucltree.laz<-ladderize(eucltree,FALSE)
tiplabs<-eucltree$tip.label
numbertiplabs<-length(tiplabs)
colourtips<-rep("green",numbertiplabs)
colourtips[grep("II",tiplabs)]<-"red"
plot(eucltree.laz,tip.color=colourtips,adj=1,cex=0.6,use.edge.length=F)
add.scale.bar()

Using plot.phylo

这显然不理想,情节的“对齐”不是我想要的。我认为这与分支长度计算有关,但是我不知道如何解决这个问题。当然,与 colLab 函数的结果相比,它看起来更像我想报告的树状图样式。另外,使用 use.edge.length=T在上面的代码中确实给出了一个没有正确“对齐”的聚类:
Plot.phylo with branch length

使用 Joris Meys 的 colLab 函数和以下代码的第二种方法给出了下图
clusDendro<-as.dendrogram(as.hclust(abundance.agnes.ave))
labelColors<-c("red","green")
clusMember<-rep(1,length(rownames(abundance.x)))
clusMember[grep("II",rownames(abundance.x))]<-2
names(clusMember)<-rownames(abundance.x)

colLab <- function(n)
{
if(is.leaf(n)) {
a <- attributes(n)
# clusMember - a vector designating leaf grouping
# labelColors - a vector of colors for the above grouping
labCol <- labelColors[clusMember[which(names(clusMember) == a$label)]]
attr(n, "nodePar") <- c(a$nodePar, lab.col = labCol)
}
n
}

clusDendro<-dendrapply(clusDendro, colLab)
plot(clusDendro,horiz=T,axes=F)

Using colLab
这个情节越来越接近我想要的,但是我不知道为什么叶子上会出现空心圆圈以及如何去除它们。

任何帮助深表感谢。

亲切的问候,

调频

最佳答案

这个功能现在在一个名为“dendextend”的新包中可用,正是为这种事情而构建的。

您可以在包的演示文稿和小插图中看到许多示例,位于以下 URL 的“使用”部分:https://github.com/talgalili/dendextend

在以下 SO 问题中刚刚回答了一个几乎准确的问题:

https://stackoverflow.com/a/18832457/256662

关于r - 更改 plot.dendrogram 中的叶子颜色,就像包 ape 的 plot.phylo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16062684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com