2015-09-07 11 views
5

Ich versuche Farbe zu den Kanten Übereinstimmen (Linien) ein phylogeny-Typ Stück in R hinzuzufügen, die vom Affen plot.phylo Befehl Paket. Dieses Beispiel bezieht sich auf ein Diagramm vom Typ "Fan", obwohl ich davon ausgehe, dass der Ansatz mit einem "Phylogramm-Typ" oder ähnlichem identisch wäre.Dendrogram Kante (Zweig) Farben Spitze (Blatt) Farben (APE-Paket)

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

Hinzufügen von Farbe zu den Spitzen (Etikett), basierend auf einer Reihe von Gruppen ist kein Problem mit der tip.color Option mit cutree Befehl kombiniert.

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

Die edge.color Option definiert, um die Farben der Kanten, aber nicht in einer Art und Weise, wenn logincal viele Farben gewünscht sind.

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

Allerdings würde ich die Kanten mag die Endspitze Farben übereinstimmen, sobald dieser Zweig des Dendrogramm für eine gegebene Gruppe bestimmt ist. In dem gegebenen Beispiel in Richtung der roten & blauen Gruppen, würden bleiben die ersten Ebene der Kanten schwarz (wie es für zwei Gruppen geleitet hat: rot und blau), aber Kanten hinaus würden das gleiche wie die eventuelle Spitze Farbe gefärbt sein.

Ich vermute, liegt der Schlüssel in herauszufinden, die Reihenfolge der $ Randwerte im as.phylo Objekt aus, aber ich kann es mir nicht vorstellen. Vielen Dank.

+1

Für die Off-Chance, dass Sie nicht eine befriedigende Antwort bekommen, würde Ich mag Sie wissen lassen, dass es auch die [dendextend] (https : //github.com/talgalili/dendextend) Paket und das Paket [ggdendro] (https://github.com/andrie/ggdendro), vielleicht kann einer der beiden Ihnen helfen. Sie sind beide ziemlich neu. – maj

+1

Hi Maj, das ggdendro von Andrie war das erste Paket, das einen Dendrogramm-Plot in ggplot2 lieferte. Es war insofern begrenzt, als es verschiedene grafische Parameter der Zweige/Knoten/Blätter des Baumes nicht berücksichtigte. Der Dendextend hat eine Funktion namens "as.ggdend" (die eigentlich eine Verzweigung von ggdendro ist), die weitere grafische Parameter des Baumes berücksichtigt. Sie können weitere Informationen siehe hier: https://cran.r-project.org/web/packages/dendextend/vignettes/introduction.html#ggplot2-integration –

Antwort

4

Wie @maj in einem Kommentar vorgeschlagen, kann dendextend Ihnen helfen, wenn Sie nicht das Paket mit nichts ausmacht. Es ist sehr flexibel und verfügt über umfangreiche Dokumentationen und Vignetten.

Hier ist ein Beispiel minimal von der dendextend angepasst 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) 

Es gibt

enter image description here

+1

Genau das, was dank ich suche. Ich wusste nichts über das Paket "dendexend". Schön! –