2017-10-10 62 views
0

我想控制樹狀圖的順序和顏色。顯然,樹形圖的要點是通過相似性排序,但在分支內我想設置一個有意義的順序(字母數字)。基於標籤的重新排序和顏色樹狀圖

library(vegan) 
library(stats) 

x <-data.frame(data = c(1:10)) 
y = data.frame(type = c("A","B","C","A","C","D","A","B","C","B"), site_name = c("A1","B1","C1","A2","C2","D1","A3","B2","C3","B3")) 
row.names(x) = y$site_name 
dis = vegdist(x) 
hc <- hclust(dis) 
dd <- as.dendrogram(hc) 
plot(dd) 

enter image description here

我的數據標籤文本,但他們確實有在列舉了一組順序的變量

site_order = c("A1","A2","A3","B1","B2","B3","C1","C2","C3","D1") 

1)我想找到排序根據樹狀圖的解決方案到分行內的site_order

例如A1,B1,A2,C1,C2,D2,A3,B2,B3,C3

我也希望顏色和形狀使用site_type 例如(A =紅色圓圈標籤,B =藍色正方形,C =綠色三角形,D =黃色十字)

這可能嗎?

回答

0

這是使用dendextend的rotate函數最好的工作。

library(vegan) 
library(stats) 

x <-data.frame(data = c(1:10)) 
y = data.frame(type = c("A","B","C","A","C","D","A","B","C","B"), site_name = c("A1","B1","C1","A2","C2","D1","A3","B2","C3","B3")) 
row.names(x) = y$site_name 
dis = vegdist(x) 
hc <- hclust(dis) 
dd <- as.dendrogram(hc) 

par(mfrow = c(1,2)) 
plot(dd, main = "orig") 

library(dendextend) 
dd2 <- rotate(dd, sort(labels(dd))) 
plot(dd2, main = "as sorted as possible \n(under the constraints)") 

輸出:

enter image description here

您可以瞭解更多關於dendextend包從the online vignettes