layout_with_fr {igraph} | R Documentation

## The Fruchterman-Reingold layout algorithm

### Description

Place vertices on the plane using the force-directed layout algorithm by Fruchterman and Reingold.

### Usage

    layout_with_fr(graph, coords = NULL, dim = 2, niter = 500,
      start.temp = sqrt(vcount(graph)), grid = c("auto", "grid", "nogrid"),
      weights = NULL, minx = NULL, maxx = NULL, miny = NULL, maxy = NULL,
      minz = NULL, maxz = NULL, coolexp, maxdelta, area, repulserad, maxiter)

    with_fr(...)

### Arguments

`graph` | The graph to lay out. Edge directions are ignored.
`coords` | Optional starting positions for the vertices. If this argument is not `NULL` then it should be an appropriate matrix of starting coordinates.
`dim` | Integer scalar, 2 or 3, the dimension of the layout. Two dimensional layouts are places on a plane, three dimensional ones in the 3d space.
`niter` | Integer scalar, the number of iterations to perform.
`start.temp` | Real scalar, the start temperature. This is the maximum amount of movement alloved along one axis, within one step, for a vertex. Currently it is decreased linearly to zero during the iteration.
`grid` | Character scalar, whether to use the faster, but less accurate grid based implementation of the algorithm. By default (“auto”), the grid-based implementation is used if the graph has more than one thousand vertices.
`weights` | A vector giving edge weights. The `weight` edge attribute is used by default, if present. If weights are given, then the attraction along the edges will be multiplied by the given edge weights.
`minx` | If not `NULL`, then it must be a numeric vector that gives lower boundaries for the ‘x’ coordinates of the vertices. The length of the vector must match the number of vertices in the graph.
`maxx` | Similar to `minx`, but gives the upper boundaries.
`miny` | Similar to `minx`, but gives the lower boundaries of the ‘y’ coordinates.
`maxy` | Similar to `minx`, but gives the upper boundaries of the ‘y’ coordinates.
`minz` | Similar to `minx`, but gives the lower boundaries of the ‘z’ coordinates.
`maxz` | Similar to `minx`, but gives the upper boundaries of the ‘z’ coordinates.
`coolexp,maxdelta,area,repulserad` | These arguments are not supported from igraph version 0.8.0 and are ignored (with a warning).
`maxiter` | A deprecated synonym of `niter`, for compatibility.
`...` | Passed to `layout_with_fr`.

### Details

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

This function was rewritten from scratch in igraph version 0.8.0.

### Value

A two- or three-column matrix, each row giving the coordinates of a vertex, according to the ids of the vertex ids.

### Author(s)

Gabor Csardi csardi.gabor@gmail.com

### References

Fruchterman, T.M.J. and Reingold, E.M. (1991). Graph Drawing by Force-directed Placement. Software - Practice and Experience, 21(11):1129-1164.

### See Also

`layout_with_drl`, `layout_with_kk` for other layout algorithms.

Other graph layouts: `add_layout_`; `as_bipartite`, `layout.bipartite`, `layout_as_bipartite`; `as_star`, `layout.star`, `layout_as_star`; `as_tree`, `layout_as_tree`; `component_wise`; `in_circle`, `layout_in_circle`; `layout.auto`, `layout_nicely`, `nicely`; `layout.davidson.harel`, `layout_with_dh`, `with_dh`; `layout.gem`, `layout_with_gem`, `with_gem`; `layout.graphopt`, `layout_with_graphopt`, `with_graphopt`; `layout.grid`, `layout.grid.3d`, `layout.grid.3d`, `layout_on_grid`, `on_grid`; `layout.mds`, `layout_with_mds`, `with_mds`; `layout.merge`, `layout_components`, `merge_coords`, `piecewise.layout`, `piecewise.layout`; `layout.norm`, `norm_coords`; `layout.sugiyama`, `layout_with_sugiyama`, `with_sugiyama`; `layout_on_sphere`, `on_sphere`; `layout_randomly`, `randomly`; `layout_with_kk`, `with_kk`; `layout_with_lgl`, `with_lgl`; `layout`, `layout_`, `print.igraph_layout_modifier`, `print.igraph_layout_spec`; `normalize`

### Examples

    # Fixing ego
    g <- sample_pa(20, m=2)
    minC <- rep(-Inf, vcount(g))
    maxC <- rep(Inf, vcount(g))
    minC[1] <- maxC[1] <- 0
    co <- layout_with_fr(g, minx=minC, maxx=maxC,
                                      miny=minC, maxy=maxC)
    co[1,]
    plot(g, layout=co, vertex.size=30, edge.arrow.size=0.2,
         vertex.label=c("ego", rep("", vcount(g)-1)), rescale=FALSE,
         xlim=range(co[,1]), ylim=range(co[,2]), vertex.label.dist=0,
         vertex.label.color="red")
    axis(1)
    axis(2)

[Package igraph version 1.0.1 Index]