Aan de slagGa gratis aan de slag

igraph-netwerklayouts

Het igraph-pakket biedt verschillende ingebouwde layout-algoritmen voor netwerkvisualisatie. Afhankelijk van de grootte van een netwerk kunnen verschillende layouts effectiever zijn om de structuur duidelijk te maken. Idealiter is de beste layout degene die het aantal randen dat elkaar kruist minimaliseert. In deze oefening verken je een paar van de vele standaard layout-algoritmen. Het opnieuw uitvoeren van de code voor elke plot levert telkens een iets andere versie van hetzelfde layouttype op. Dit een paar keer doen kan helpen om de best uitziende visualisatie voor je netwerk te vinden.

Deze oefening maakt deel uit van de cursus

Netwerkanalyse in R

Cursus bekijken

Oefeninstructies

  • Verander in de plotfunctie het argument layout naar layout_in_circle() om een cirkelnetwerk te maken.
  • Verander in de plotfunctie het argument layout naar layout_with_fr() om een netwerk met de Fruchterman-Reingold-layout te maken.
  • Je kunt de layout ook vastleggen door een matrix met (x, y)-coördinaten voor elk knooppunt op te geven. Hier gebruik je de functie layout_as_tree() om de matrix m met coördinaten te genereren. Geef daarna m door aan het layout-argument in plot() om te plotten.
  • De juiste layout kiezen kan verwarrend zijn. Gelukkig heeft igraph een functie layout_nicely() die probeert de meest geschikte layoutfunctie voor een bepaald graafobject te kiezen. Gebruik deze functie om de matrix m1 te maken en plot het netwerk met deze coördinaten.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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 = ___)
Code bewerken en uitvoeren