Bob
Bob

Reputation: 35

How to retain the general shape of a network in igraph?

I currently have a network graph in igraph with which I am running simulations to see how the frequency of traits change over time like so:

  g <- erdos.renyi.game(1000, 1/1000)
  V(g)$nice <- sample(c(0, 1), vcount(g), replace = TRUE, prob = c(0.1, 0.9)

Following this I have a working code that modifies the the network across several "turns". The problem arises when I graph the network. I initially graph the network at t = 0 and once more at t = 20 or so to compare the two and see how they have changed. However, the location of the nodes have changed from the initial to the final. Is there a way that I can retain the location of the nodes in the actual graph? (i.e. so that node 4 will remain at some coordinate (a, b) despite changes in the network)

Upvotes: 2

Views: 299

Answers (1)

G5W
G5W

Reputation: 37661

You can repeat the same layout by using the layout argument to plot. First, you create a layout using one of the many layout_ arguments, then just call plot specifying the layout. If you plot again with the same layout, the nodes will be in the same place.

LO_FR = layout_with_fr(g)
plot(g, layout=LO_FR, vertex.size=4, vertex.label=NA,
    main="layout_with_fr")

layout_with_fr

LO_N = layout_nicely(g)
plot(g, layout=LO_N, vertex.size=4, vertex.label=NA, 
    main="layout_nicely")

layout_nicely

Type help(package=igraph) and then scroll down to the functions whose names start with layout_. Try several and pick one that you like.

Upvotes: 1

Related Questions