在R中绘制漂亮且对齐的彩色树状图

时间:2015-12-16 16:35:26

标签: r colors formatting dendrogram dendextend

我正在使用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函数进行绘图,我可以获得彩色树状图,但丢失了格式选项(在图片中这是“树状图2”):

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

当我使用hang和cex来控制文本大小和位置时,ColorDendrogram给了我错误。 enter image description here 我的问题

有没有人知道如何解决这个问题,无论是在Sparcl包中还是其他包中?我希望ColorDendrogram具有灵活的颜色,但不会失去格式化功能。

1 个答案:

答案 0 :(得分:1)

尝试使用dendextendvignette)包,它可以为您提供所有灵活性:

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