2017-10-10 2 views
0

Ich versuche, die Reihenfolge und Farbe eines Dendrogramms zu kontrollieren. Offensichtlich liegt der Sinn des Dendorgramms darin, nach Ähnlichkeit zu ordnen, aber innerhalb von Zweigen möchte ich eine Ordnung festlegen, die Sinn ergibt (alphabetisch-numerisch).Reorder und Farbdendogramm basierend auf Etiketten

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

Meine Daten Etiketten sind Text, aber sie haben einen Satz, um in eine Variable aufgeführt haben

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

1) Ich möchte eine Lösung finden, die Dendogramm sortiert nach zu site_order innerhalb der Zweige.

z.B. A1, B1, A2, C1, C2, D2, A3, B2, B3, C3

Ich mag auch die Etikett Farbe und Form unter Verwendung von site_type eg (A = rotem Kreis, B = blau Quadrat, C = grünes Dreieck, D = gelbes Kreuz)

Ist das möglich?

Antwort

0

Dies ist ein Job, der am besten mit der Funktion rotate von dendextend erledigt wird.

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)") 

Ausgang:

enter image description here

Sie können von the online vignettes mehr auf dem dendextend Paket lernen.