Skip to contents

Place vertices on the plane using the GEM force-directed layout algorithm.

Usage

layout_with_gem(
  graph,
  coords = NULL,
  maxiter = 40 * vcount(graph)^2,
  temp.max = max(vcount(graph), 1),
  temp.min = 1/10,
  temp.init = sqrt(max(vcount(graph), 1))
)

with_gem(...)

Arguments

graph

The input graph. Edge directions are ignored.

coords

If not NULL, then the starting coordinates should be given here, in a two or three column matrix, depending on the dim argument.

maxiter

The maximum number of iterations to perform. Updating a single vertex counts as an iteration. A reasonable default is 40 * n * n, where n is the number of vertices. The original paper suggests 4 * n * n, but this usually only works if the other parameters are set up carefully.

temp.max

The maximum allowed local temperature. A reasonable default is the number of vertices.

temp.min

The global temperature at which the algorithm terminates (even before reaching maxiter iterations). A reasonable default is 1/10.

temp.init

Initial local temperature of all vertices. A reasonable default is the square root of the number of vertices.

...

Passed to layout_with_gem().

Value

A numeric matrix with two columns, and as many rows as the number of vertices.

Details

See the referenced paper below for the details of the algorithm.

References

Arne Frick, Andreas Ludwig, Heiko Mehldau: A Fast Adaptive Layout Algorithm for Undirected Graphs, Proc. Graph Drawing 1994, LNCS 894, pp. 388-403, 1995.

Author

Gabor Csardi csardi.gabor@gmail.com

Examples


set.seed(42)
g <- make_ring(10)
plot(g, layout = layout_with_gem)