簡體   English   中英

基於數據框中列的樹狀圖的顏色分支

[英]Color branches of a dendrogram based on column in dataframe

我想根據 hclust 函數中使用的數據幀列中的值為樹狀圖的分​​支着色。

在您將這個問題標記為重復之前,正如在這個問題中所做的那樣,它鏈接到這個問題 請注意,這實際上從未在答案中完全解決。 根據樹狀圖的拓撲為分支着色很容易,但我無法弄清楚如何根據hclust函數中使用的數據幀中的hclust

我已經嘗試以兩種非常相似的方式使用 dendexend 包:

library(dendextend)
par(mar = c(2,1,0,8)) #make sure the whole plot is on the page
hc <- hclust(dist(mtcars)) #cluster dataframe based on distance
dend <- as.dendrogram(hc) #use dendextend to create dendrogram
dend2 <- color_branches(dend, col = mtcars$cyl) #attempt but fail at coloring branches
plot (dend2, horiz = TRUE) #plot dendrogram

dend3 <- assign_values_to_leaves_edgePar(dend, value = mtcars$cyl, edgePar = "col") #attempt but fail at coloring branches
plot (dend3, horiz = TRUE) #plot dendrogram

factor(mtcars$cyl替換mtcars$cyl不能解決問題。

這兩種解決方案都會產生未正確着色的樹狀圖。 在此處輸入圖片說明 看起來它是根據 cyl 列中值的順序從樹狀圖的底部到頂部對顏色進行排序,但由於分支不再按該順序排列,着色沒有任何意義。 我不想對數據框進行排序來解決這個問題。

謝謝。

您需要按照樹狀圖的葉子順序放置顏色。 您可以使用labels()來提取葉子上使用的名稱

dend2 <- color_branches(dend, col=mtcars[labels(dend),"cyl"])

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM