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