1

我正在绘制 WGCNA 包中 moduleeigengenes 的树状图,我想订购/交换分支。我使用该plotEigengeneNetworks函数来绘制它,但无法定义分支的顺序。我知道有dendextend用于修改树状图的包,但这不适用于plotEigengeneNetworks函数产生的输出。对于如何实现这一目标的任何建议,我都会有所帮助。

例子:

library(WGCNA)
set.seed(123)

ME <- data.frame(replicate(15, sample(1:10, 11, rep=TRUE)))
ME[,c(1:11)] <- sapply(ME[, c(1:11)], as.numeric)    

plotEigengeneNetworks(ME, plotAdjacency = TRUE, setLabels = colnames(ME), plotDendrograms = TRUE, plotHeatmaps = FALSE)
4

1 回答 1

0

查看 plotEigengeneNetworks 的代码,您将无法使用它做您想做的事情。但是,您可以做的是重现它创建集群的方式,然后使用dendextend 包直接更新树状图(从 hclust 生成),使用以下命令:

# we need to run all of this to get the relevant packages...
source("http://bioconductor.org/biocLite.R")
biocLite("S4Vectors")
biocLite("IRanges")
biocLite("GenomeInfoDb")
biocLite("AnnotationDbi")
biocLite("GO.db")

biocLite("WGCNA")

# what the author wanted:
library(WGCNA)
set.seed(123)

ME <- data.frame(replicate(15, sample(1:10, 11, rep=TRUE)))
ME[,c(1:11)] <- sapply(ME[, c(1:11)], as.numeric)    

plotEigengeneNetworks(ME, plotAdjacency = TRUE, setLabels = colnames(ME), plotDendrograms = TRUE, plotHeatmaps = FALSE)

# =================================
# Reproduce the above plot:
corME = cor(ME)
disME = as.dist(1 - corME)
clust = fastcluster::hclust(disME, method = "average") # you could also use stats::hclust just as well...
plot(clust)


# Now that we got what we wanted, let's move to dendrogram land
dend <- as.dendrogram(clust)

# get dendextend
if(!require(dendextend)) install.packages("dendextend")
library(dendextend)
dend <- hang.dendrogram(dend)
# plot(dend) # it now looks similar to the hclust plot
# we can now rotate the labels:
dend <- color_labels(dend)
dend2 <- rotate(dend, order = sort(labels(dend)))
par(mfrow = c(1,2))
plot(dend, main = "Original dend plot")
plot(dend2, main = "Dend plot after rotating the labels")
#

结果:

在此处输入图像描述

于 2015-11-14T08:53:03.763 回答