Ho una situazione in cui sto tracciando un dendrogramma con punti dati forniti con etichette di classe. Vorrei vedere che il clustering agglomerato raggruppa quelli con la stessa etichetta insieme. La codifica a colori delle etichette facilita la lettura di questo dendrogramma. C'è un modo per raggiungere questo obiettivo con ggdendro in R?Etichettatura di foglie ggdendro in più colori
11
A
risposta
17
Rubare la maggior parte della messa a punto da this post ...
library(ggplot2)
library(ggdendro)
data(mtcars)
x <- as.matrix(scale(mtcars))
dd.row <- as.dendrogram(hclust(dist(t(x))))
ddata_x <- dendro_data(dd.row)
p2 <- ggplot(segment(ddata_x)) +
geom_segment(aes(x=x, y=y, xend=xend, yend=yend))
... e l'aggiunta di un fattore di raggruppamento ...
labs <- label(ddata_x)
labs$group <- c(rep("Clust1", 5), rep("Clust2", 2), rep("Clust3", 4))
labs
# x y text group
# 1 1 0 carb Clust1
# 2 2 0 wt Clust1
# 3 3 0 hp Clust1
# 4 4 0 cyl Clust1
# 5 5 0 disp Clust1
# 6 6 0 qsec Clust2
# 7 7 0 vs Clust2
# 8 8 0 mpg Clust3
# 9 9 0 drat Clust3
# 10 10 0 am Clust3
# 11 11 0 gear Clust3
... si può usare l'argomento aes(colour=)
-geom_text()
per colorare le etichette:
p2 + geom_text(data=label(ddata_x),
aes(label=label, x=x, y=0, colour=labs$group))
(Se si desidera fornire i propri colori, è possibile utilizzare scale_colour_manual()
, fare qualcosa di simile:
p2 + geom_text(data=label(ddata_x),
aes(label=label, x=x, y=0, colour=labs$group)) +
scale_colour_manual(values=c("blue", "orange", "darkgreen"))
Problemi correlati
- 1. Etichettatura di sequenza in TensorFlow
- 2. Più colori in TextBlock
- 3. Etichettatura di ruolo semantico automatico in FrameNet
- 4. Auto ambienti di etichettatura in AUCTeX
- 5. Etichettatura di valori erronei in R
- 6. Più colori di sfondo, immagini in css
- 7. R: pacchetto ggdendro tracciare etichette scompaiono
- 8. POS etichettatura a Scala
- 9. etichettatura dell'asse d3
- 10. TeamCity - SVN ed etichettatura
- 11. Etichettatura facet con R
- 12. Etichettatura di rails e lista di tag
- 13. Albero Kd: i dati sono memorizzati solo nelle foglie e conservati nelle foglie e nei nodi
- 14. Titolo figura con più colori in matplotlib
- 15. JavaFX Più colori in textarea (JavaFX 8)
- 16. Identifica lobate e dossi di foglie
- 17. Più colori per ciascun elemento in JComboBox
- 18. ggplotly - R, etichettatura nomi di traccia
- 19. Etichettatura di nodi specifici per Networkx
- 20. Frazione nella legenda, più colori
- 21. XElement: una raccolta di tutte le foglie?
- 22. Etichettatura di valori anomali di boxplot in R
- 23. Più colori di sfondo con solo CSS
- 24. Più colori di sfondo su 1 DIV
- 25. Etichettatura di valori anomali su boxplot in R
- 26. Etichettatura casella di controllo e Radio in knockout
- 27. font più grande e spaziatura tra le foglie in R dendrogramma
- 28. Scorri l'albero di ricerca binario per trovare tutte le foglie
- 29. Rileva lo schema delle vene nelle foglie?
- 30. Posso avere più colori in un singolo TextBlock in WPF?
Grazie! Sono relativamente nuovo a R, questo mi aiuta molto. – chet
Eseguendo il codice, ottengo 2 errori: 1) in 'geom_segment', non riesce a trovare' x0' ma questo viene semplicemente corretto cambiando gli argomenti in 'x = x, y = y, xend = xend, yend = yend'; 2) in 'geom_text', dice:' Non so come selezionare automaticamente la scala per l'oggetto di tipo funzione. Defaulting to continue Errore in data.frame (x = c (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), y = 0, label = function (x,: argument implica numero di righe diverso: 11, 1, 0'. Come posso risolverlo? Perché ho un caso simile da trattare (es. colorare le etichette) e fornisce lo stesso errore. –
@DavidePassaretti - Con l'aiuto di Andrie de Vries (** ggdendro ** 's author) e Roland (un altro SO regolare), ho modificato il codice in modo che funzioni con la versione corrente di ** ggdendro **. Grazie per l'avviso che questa risposta non era più funzionale ! –