1

我正在使用 Sparcl 包(https://cran.r-project.org/web/packages/sparcl/sparcl.pdf)在 R 中绘制树状图。在我的具体问题中,我根据一个标准对组进行聚类,我想通过基于另一个标准的着色来可视化(这样做的目的是表明集群与另一个特征重合(或不重合)。我已经能够使用 Sparcl 包做到这一点,以突出显示我想强调:

df <- read.delim("the_data_matrix.txt");
d <- dist(as.matrix(df))
hc = hclust(d)
y[]='black'
y[list_of_nodes$V1]='red' # This will allow me to color only certain branches red, leaving the others black

如果我使用标准绘图功能进行绘图,我可以使用 hang 和 cex 控制各种参数,例如标签和文本大小(但不能为任何分支着色)(在图片中这是“Dendrogram 1”):

plot(hc,hang=-10,cex=.1)

另一方面,如果我使用 Sparcl 中的 ColorDendrogram 函数进行绘图,我可以获得彩色树状图,但会丢失格式选项(在图片中这是“Dendrogram 2”):

ColorDendrogram(hc, y = y, branchlength = 4)

当我使用 hang 和 cex 来控制文本大小和位置时,ColorDendrogram 给了我错误。 我的问题在此处输入图像描述

有谁知道如何解决这个问题,无论是在 Sparcl 包中还是在另一个包中?我想拥有 ColorDendrogram 所具有的颜色灵活性,但又不会失去格式化功能。

4

1 回答 1

1

Try the package dendextend (vignette), which should give you all flexibility:

library(dendextend)
d1 <- mtcars %>% dist %>% hclust %>% as.dendrogram
d2 <- mtcars %>% dist(method="minkowski") %>% hclust(method="single") %>% as.dendrogram
vals <- grep("Merc", rownames(mtcars), val=T) # highlight branches leading to "Merc..."

par(mfrow=c(2, 1))
d1 %>% set("by_labels_branches_col", value = vals) %>% set("hang_leaves", -10) %>% set("labels_cex", .1) %>% plot
d2 %>% set("by_labels_branches_col", value = vals) %>% plot

enter image description here

于 2015-12-16T17:32:29.923 回答