Wie färbt man die Etiketten eines Dendrogramms nach definierten Gruppen? (in R)

Ich habe eine numerische Matrix in R mit 24 Zeilen und 10.000 Spalten. Die Zeilennamen dieser Matrix sind im Grunde genommen Dateinamen, aus denen ich die Daten für jede der 24 Zeilen gelesen habe. Abgesehen davon habe ich eine separate Faktorliste mit 24 Einträgen, in der angegeben ist, zu welcher Gruppe die 24 Dateien gehören. Es gibt 3 Gruppen - Alkohole, Kohlenwasserstoffe und Ester. Die Namen und die entsprechende Gruppe, zu der sie gehören, sehen folgendermaßen aus:

> MS.mz
[1] "int-354.19" "int-361.35" "int-368.35" "int-396.38" "int-408.41" "int-410.43" "int-422.43"
[8] "int-424.42" "int-436.44" "int-438.46" "int-452.00" "int-480.48" "int-648.64" "int-312.14"
[15] "int-676.68" "int-690.62" "int-704.75" "int-312.29" "int-326.09" "int-326.18" "int-326.31"
[22] "int-340.21" "int-340.32" "int-352.35"

> MS.groups
[1] Alcohol     Alcohol     Alcohol     Alcohol     Hydrocarbon Alcohol     Hydrocarbon Alcohol    
[9] Hydrocarbon Alcohol     Alcohol     Alcohol     Ester       Alcohol     Ester       Ester      
[17] Ester       Alcohol     Alcohol     Alcohol     Alcohol     Alcohol     Alcohol     Hydrocarbon
Levels: Alcohol Ester Hydrocarbon

Ich wollte ein Dendrogramm erstellen, um zu sehen, wie die Daten in der Matrix gruppiert werden können. Also habe ich die folgenden Befehle verwendet:

require(vegan)
dist.mat<-vegdist(MS.data.scaled.transposed,method="euclidean")
clust.res<-hclust(dist.mat)
plot(clust.res)

und ich habe ein Dendogramm. Jetzt möchte ich die Dateinamen im Dendrogramm entsprechend der Gruppe einfärben, zu der sie gehören, d. H. Alkohol, Kohlenwasserstoff oder Ester. Ich habe mir verschiedene Beispiele angeschaut, die im Forum gepostet wurden wie

Label und Farbe Blattdendrogramm in r

Label und Farbe Blattdendrogramm in R mit Affenpaket

Clustering mit Bootstrapping

, konnte es aber nicht für meine Daten implementieren. Ich bin nicht sicher, wie ich row.names mit den MS.groups korrelieren soll, um die farbigen Namen im Dendrogramm zu erhalten.

Beim Generieren des Baums mit dendextend (wie in @ erklärhttps: //nycdatascience.com/wp-content/uploads/2013/09/dendextend-tutorial.pd) Erhalte ich den folgenden Baum

Hier ist der Code, der zum Generieren verwendet wird:

require(colorspace)
d_SIMS <- dist(firstpointsample5[,-1])
hc_SIMS <- hclust(d_SIMS)
labels(hc_SIMS)
dend_SIMS <- as.dendrogram(hc_SIMS)
SIMS_groups <- rev(levels(firstpointsample5[, 1]))
dend_SIMS <- color_branches(dend_SIMS, k = 3, groupLabels = SIMS_groups)
is.character(labels(dend_SIMS)) 
plot(dend_SIMS)
labels_colors(dend_SIMS) <- rainbow_hcl(3)[sort_levels_values(as.numeric(firstpointsample5[,1])[order.dendrogram(dend_SIMS)])]
labels(dend_SIMS) <- paste(as.character(firstpointsample5[, 1])[order.dendrogram(dend_SIMS)],"(", labels(dend_SIMS), ")", sep = "")
dend_SIMS <- hang.dendrogram(dend_SIMS, hang_height = 0.1)
dend_SIMS <- assign_values_to_leaves_nodePar(dend_SIMS, 0.5,"lab.cex")
par(mar = c(3, 3, 3, 7))
plot(dend_SIMS, main = "Clustered SIMS dataset\n (the labels give the true m/z groups)",horiz = TRUE, nodePar = list(cex = 0.007))
legend("topleft", legend = SIMS_groups, fill = rainbow_hcl(3))

Antworten auf die Frage(6)

Ihre Antwort auf die Frage