# layout_with_gem: The GEM layout algorithm In igraph: Network Analysis and Visualization

## Description

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

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10``` ```layout_with_gem( graph, coords = NULL, maxiter = 40 * vcount(graph)^2, temp.max = vcount(graph), temp.min = 1/10, temp.init = sqrt(vcount(graph)) ) 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`.

## Details

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

## Value

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

## Author(s)

Gabor Csardi csardi.gabor@gmail.com

## 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.

`layout_with_fr`, `plot.igraph`, `tkplot`
Other graph layouts: `add_layout_()`, `component_wise()`, `layout_as_bipartite()`, `layout_as_star()`, `layout_as_tree()`, `layout_in_circle()`, `layout_nicely()`, `layout_on_grid()`, `layout_on_sphere()`, `layout_randomly()`, `layout_with_dh()`, `layout_with_fr()`, `layout_with_graphopt()`, `layout_with_kk()`, `layout_with_lgl()`, `layout_with_mds()`, `layout_with_sugiyama()`, `layout_()`, `merge_coords()`, `norm_coords()`, `normalize()`
 ```1 2 3``` ```set.seed(42) g <- make_ring(10) plot(g, layout=layout_with_gem) ```