2015-09-07 121 views
5

我試圖添加顏色到邊緣(線)的R系統發育類型情節使用plot.phylo命令從猿包。這個例子是針對「粉絲」類型的情節,儘管我期望這種方法與「類型化的類型」或其他相同。樹狀圖邊緣(分支)顏色匹配提示(葉)顏色(猿包)

library('ape') 
hc <- hclust(dist(USArrests), "ave") 
plot(as.phylo(hc), type="fan") 

添加顏色到基於一組基團的尖端(標籤)與tip.color選項與cutree命令組合沒有問題。當多種顏色被期望

hc.cuts <- cutree(hc, k=5) 
plot(as.phylo(hc), type="fan", tip.color=rainbow(5)[hc.cuts]) 

的edge.color選項定義,但不是在一個logincal方式的邊緣的顏色。

plot(as.phylo(hc), type="fan", tip.color=rainbow(5)[hc.cuts], edge.color=rainbow(5)[hc.cuts]) 

但是,我希望邊緣匹配終端提示顏色,一旦該樹狀分支的目的地是給定的組。在給定的例子中,對於藍色組,紅色邊緣的第一層將保持黑色(因爲紅色和藍色兩組),但除此之外的邊緣的顏色與最終的顏色相同。

我懷疑關鍵在於找出as.phylo對象中$ edge值的順序,但我自己無法弄清楚。謝謝。

+1

對於關閉的機會,你不會得到一個滿意的答案,我想告訴你,也有在[dendextend](HTTPS ://github.com/talgalili/dendextend)軟件包和[ggdendro](https://github.com/andrie/ggdendro)軟件包,也許其中的一個可以幫助你。他們都很新。 – maj

+1

Hi Maj, Andrie的ggdendro是幫助在ggplot2中創建樹狀圖的第一個軟件包。它受到限制,因爲它沒有考慮樹的分支/節點/樹葉的各種圖形參數。 dendextend有一個名爲「as.ggdend」的函數(它實際上是ggdendro的一個分支),它確實考慮了樹的更多圖形參數。你可以在這裏看到更多的信息:https://cran.r-project.org/web/packages/dendextend/vignettes/introduction.html#ggplot2-integration –

回答

4

正如評論中建議的@maj,如果您不介意使用該軟件包,dendextend可以幫助您。它非常靈活,並有豐富的文檔和小插曲。

下面是一個從dendextend FAQ最小改編的例子。

# install.packages("dendextend") 
# install.packages("circlize") 

library(dendextend) 
library(circlize) 

hc <- hclust(dist(USArrests)) 
dend <- as.dendrogram(hc) 

num_clades <- 5 

dend <- dend %>% 
    color_branches(k=num_clades, col=rainbow) %>% 
    color_labels(k=num_clades, col=rainbow) 

par(mar = rep(0, 4)) 
circlize_dendrogram(dend, dend_track_height = 0.8) 

它輸出

enter image description here

+1

正是我在找什麼,謝謝。我不知道'dendextend'包。可愛! –