Układy sieci w igraph
Pakiet igraph oferuje kilka wbudowanych algorytmów układu do wizualizacji sieci. W zależności od rozmiaru sieci różne układy mogą lepiej lub gorzej oddawać jej strukturę. Najlepszy układ to taki, który minimalizuje liczbę przecinających się krawędzi. W tym ćwiczeniu poznasz kilka z wielu dostępnych domyślnych algorytmów układu. Ponowne uruchomienie kodu dla każdego wykresu da nieco inny wariant tego samego typu układu – warto to zrobić kilka razy, aby znaleźć najlepiej wyglądającą wizualizację swojej sieci.
To ćwiczenie jest częścią kursu
Analiza sieci w R
Instrukcje do ćwiczenia
- W funkcji
plotzmień argumentlayoutnalayout_in_circle(), aby uzyskać sieć w układzie okrągłym. - W funkcji
plotzmień argumentlayoutnalayout_with_fr(), aby uzyskać sieć w układzie Fruchtermana-Reingolda. - Możesz też określić układ, podając macierz współrzędnych (x, y) dla każdego wierzchołka. Użyj funkcji
layout_as_tree(), aby wygenerować macierzmze współrzędnymi, a następnie przekażmdo parametrulayoutw funkcjiplot(). - Wybór odpowiedniego układu bywa trudny. Na szczęście
igraphudostępnia funkcjęlayout_nicely(), która sama stara się dobrać najlepszy układ dla danego obiektu grafu. Użyj tej funkcji, aby utworzyć macierzm1, a następnie zwizualizuj sieć na podstawie tych współrzędnych.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
library(igraph)
# Plot the graph object g1 in a circle layout
plot(g1, vertex.label.color = "black", layout = ___(g1))
# Plot the graph object g1 in a Fruchterman-Reingold layout
plot(g1, vertex.label.color = "black", layout = ___(g1))
# Plot the graph object g1 in a Tree layout
m <- ___(g1)
plot(g1, vertex.label.color = "black", layout = m)
# Plot the graph object g1 using igraph's chosen layout
___ <- layout_nicely(___)
plot(___, vertex.label.color = "black", layout = ___)