Ho un semplice insieme di relazioni direzionali (genitore-> figlio) che voglio disegnare. I miei dati sono strutturati in modo tale che ci siano molte sottoreti discrete. Ecco alcuni dati falsi che assomigliano ai miei.disegnare più reti discrete in R utilizzando igraph
require(igraph)
parents<-c("A","A","C","C","F","F","H","I")
children<-c("B","C","D","E","G","H","I","J")
begats<-data.frame(parents=parents,children=children)
graph_begats<-graph.data.frame(begats)
plot(graph_begats)
Ci sono due distinte sottoreti nei dati falsi, ognuno dei quali è strettamente un lignaggio genitore-figlio. Ho bisogno di disegnare entrambi i lignaggi come reti di alberi nella stessa finestra (idealmente stesso sistema di coordinate dei vertici). Ho provato a usare layout.reingold.tilford(), ma nel migliore dei casi tutto ciò che posso disegnare è uno degli alberi, con tutti gli altri vertici che tracciano in cima al vertice della radice, come questo.
lo<-layout.reingold.tilford(graph_begats,root=1)
plot(graph_begats,layout=lo)
Qualche idea per fare questo per un numero arbitrario di linee discrete?
Se ho potuto capire come A) calcolare il numero di linee discreti nell'insieme di dati, e B) assegnare ciascun vertice dei suoi ascendenti, sarei 75% del modo di un soluzione al mio problema. –
Separa la rete, usando 'clusters()' o 'decompose.graph()', quindi calcola il layout separatamente per ciascuno, quindi uniscili, spostando una delle matrici di layout. –
Sì! 'decompose.graph()' è ciò di cui ho bisogno. Sto ancora lavorando al cambio matrice, ma ci sto arrivando. –