2015-12-16 103 views
1

我使用Sparcl軟件包(https://cran.r-project.org/web/packages/sparcl/sparcl.pdf)繪製R中的樹狀圖。在我的具體問題中,我根據一個標準對這些組進行聚類,並且我想通過基於另一個標準(這一點是爲了說明該集羣與另一個特徵是否一致)我已經能夠使用Sparcl包來做到這一點,以突出我想強調的節點:在R中繪製漂亮和對齊的彩色樹狀圖

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 

如果我繪製標準繪圖功能,我可以控制各種參數,如標籤和文本大小與掛起和cex(但不能着色任何分支)(圖片中這是「樹狀圖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具有的顏色靈活性,但不會丟失格式化功能。

+0

檢查出[ggtree包(https://github.com/GuangchuangYu/ggtree) 。這將有點學習,但一旦你得到它,樹木更容易繪製。 – jeremycg

回答

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

+1

請原諒我的無知,但「%>%」是做什麼的? – Jonathan

+1

查看''?dendextend ::'%>%'''或讀取小插曲:_「dendextend鼓勵使用%>%(」管道「或」鏈接「)操作符(從magrittr包中導入)。這將x%>%f(y)轉換爲f(x,y),因此您可以使用它重寫(「鏈接」)多個操作,以便可以從左到右,底部。」_ – lukeA