Mam prosty zestaw kierunkowych relacji (rodzic-> dziecko), które chcę narysować. Moje dane są skonstruowane tak, że istnieje wiele dyskretnych podsieci. Oto kilka fałszywych danych, które wyglądają jak moje.rysuj wiele dyskretnych sieci w R używając 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)
Istnieją dwie odrębne podsieci w fałszywych danych, z których każda jest ściśle linii rodowodem rodziców. Muszę narysować obie linie jako drzewa sieci w tym samym oknie (najlepiej ten sam układ współrzędnych wierzchołków). Próbowałem użyć layout.reingold.tilford(), ale w najlepszym razie wszystko, co mogę narysować, to jeden z drzew, z wszystkimi innymi wierzchołkami kreślonymi na wierzchołku wierzchołka, tak jak to.
lo<-layout.reingold.tilford(graph_begats,root=1)
plot(graph_begats,layout=lo)
Jakieś pomysły na zrobienie tego dla dowolnej liczby dyskretnych linii?
Gdybym mógł dowiedzieć się, jak A) obliczyć liczbę odrębnych rodów w zbiorze danych, oraz b) przypisanie każdego wierzchołka do jego rodu, byłbym 75% drogi do rozwiązanie mojego problemu. –
Rozłącz sieć, używając 'clusters()' lub 'decompose.graph()', następnie obliczyć układ osobno dla każdego, a następnie scalić je, przesuwając jedną z macierzy układu. –
Tak! 'decompose.graph()' jest tym, czego potrzebuję. Nadal pracuję nad zmianą matrycy, ale już się tam dostaję. –