# layout_with_fr

##### The Fruchterman-Reingold layout algorithm

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

- Keywords
- graphs

##### 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 thex 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 they coordinates. - maxy
- Similar to
`minx`

, but gives the upper boundaries of they coordinates. - minz
- Similar to
`minx`

, but gives the lower boundaries of thez coordinates. - maxz
- Similar to
`minx`

, but gives the upper boundaries of thez 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.

##### 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)
```

*Documentation reproduced from package igraph, version 1.0.0, License: GPL (>= 2)*