2016-07-06 21 views
2

Ich baue zum ersten Mal ein Dendrogramm und die Rechtecke um Cluster herum werden oben auf die Labels gezeichnet. Wissen Sie, wie Sie die Positionierung dieser Etiketten verändern, um diese Überlappung zu vermeiden?R und rect.hclust: Rechteck auf Labels in Dendrogrammen

Hier können Sie ein funktionierendes Beispiel für meinen Code finden:

mydata <- c(9.45, 10.54, 10.36, 10.46, 10.78, 10.1, 11.13) 
mydata.matrix <- matrix(mydata, nrow = 1, ncol = 7) 
colnames(mydata.matrix) <- c("a", "b", "c", "d", "e", "f", "g") 
rownames(mydata.matrix) <- c("X") 

d <- dist(mydata.matrix["X", ], method = "euclidean") 
fit <- hclust(d, method="ward.D") 

nodePar <- list(lab.cex = 0.6, pch = c(NA, 19), cex = 0.7, col = "blue") 
plot(as.dendrogram(fit), xlab = "", sub="", ylab = "Euclidean distance", 
    main = "Dendrogram", nodePar = nodePar) 

rect.hclust(fit, k=2, border="red") 

Und hier ist die Handlung aus dem Code oben:

Worked example of dendrogram

Insbesondere würde Ich mag die rot haben Rechtecke enthalten vollständig die Bezeichnungen der Blätter des Dendrogramms.

Vielen Dank!

Antwort

1

sollten Sie verwenden die rect.dendrogram Funktion aus dem dendextend package.

Zum Beispiel:

mydata <- c(9.45, 10.54, 10.36, 10.46, 10.78, 10.1, 11.13) 
mydata.matrix <- matrix(mydata, nrow = 1, ncol = 7) 
colnames(mydata.matrix) <- c("a", "b", "c", "d", "e", "f", "g") 
rownames(mydata.matrix) <- c("X") 

d <- dist(mydata.matrix["X", ], method = "euclidean") 
fit <- hclust(d, method="ward.D") 

nodePar <- list(lab.cex = 0.6, pch = c(NA, 19), cex = 0.7, col = "blue") 
dend <- as.dendrogram(fit) 
plot(dend, xlab = "", sub="", ylab = "Euclidean distance", 
    main = "Dendrogram", nodePar = nodePar) 

library(dendextend) 
rect.dendrogram(dend , k=2, border="red") 

Und Sie erhalten: enter image description here

Im Allgemeinen für Dendrogramme Plotten, finden Sie vielleicht die folgende quick introduction zu denendendend nützlich (oder sehen Sie sich die more lengthy version).

+1

ps. .: Ich denke, Sie werden wahrscheinlich auch Par (xpd = TRUE) oder etwas ähnliches, um sicherzustellen, dass die Etiketten sichtbar sind. –