Cómo colorear las etiquetas de un dendrograma por una variable de factor adicional en R
He producido un dendrograma después de ejecutar un análisis de agrupamiento jerárquico en R usando el siguiente código. Ahora estoy tratando de colorear las etiquetas de acuerdo con otra variable de factor, que se guarda como un vector. Lo más cerca que he llegado de lograr esto es codificar por color las ramas usando elColourDendrogram
funcionar en elsparcl
paquete. Si es posible, preferiría codificar por color las etiquetas. He encontrado respuestas a preguntas similares en los siguientes enlacesColorear ramas de dendrograma usando una columna existente & Colorear ramas en un dendrograma en R, pero no he podido averiguar cómo convertir el código de ejemplo para mi propósito. A continuación se muestran algunos datos y códigos de ejemplo.
> dput(df)
structure(list(labs = c("a1", "a2", "a3", "a4", "a5", "a6", "a7",
"a8", "b1", "b2", "b3", "b4", "b5", "b6", "b7"), var = c(1L,
1L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 2L), td = c(13.1,
14.5, 16.7, 12.9, 14.9, 15.6, 13.4, 15.3, 12.8, 14.5, 14.7, 13.1,
14.9, 15.6, 14.6), fd = c(2L, 3L, 3L, 1L, 2L, 3L, 2L, 3L, 2L,
4L, 2L, 1L, 4L, 3L, 3L)), .Names = c("labs", "var", "td", "fd"
), class = "data.frame", row.names = c(NA, -15L))
df.nw = df[,3:4]
labs = df$labs
d = dist(as.matrix(df.nw)) # find distance matrix
hc = hclust(d, method="complete") # apply hierarchical clustering
plot(hc, hang=-0.01, cex=0.6, labels=labs, xlab="") # plot the dendrogram
hcd = as.dendrogram(hc) # convert hclust to dendrogram
plot(hcd, cex=0.6) # plot using dendrogram object
Var = df$var # factor variable for colours
varCol = gsub("1","red",Var) # convert numbers to colours
varCol = gsub("2","blue",varCol)
# colour-code dendrogram branches by a factor
library(sparcl)
ColorDendrogram(hc, y=varCol, branchlength=0.9, labels=labs,
xlab="", ylab="", sub="")
Cualquier consejo sobre cómo hacer esto sería muy apreciado.