# layout_with_drl

##### The DrL graph layout generator

DrL is a force-directed graph layout toolbox focused on real-world large-scale graphs, developed by Shawn Martin and colleagues at Sandia National Laboratories.

- Keywords
- graphs

##### Usage

```
layout_with_drl(graph, use.seed = FALSE,
seed = matrix(runif(vcount(graph) * 2), ncol = 2),
options = drl_defaults$default, weights = E(graph)$weight,
fixed = NULL, dim = 2)
```with_drl(...)

##### Arguments

- graph
The input graph, in can be directed or undirected.

- use.seed
Logical scalar, whether to use the coordinates given in the

`seed`

argument as a starting point.- seed
A matrix with two columns, the starting coordinates for the vertices is

`use.seed`

is`TRUE`

. It is ignored otherwise.- options
Options for the layout generator, a named list. See details below.

- weights
Optional edge weights. Supply

`NULL`

here if you want to weight edges equally. By default the`weight`

edge attribute is used if the graph has one. Larger weights correspond to stronger connections, and the vertices will be placed closer to each other.- fixed
Logical vector, it can be used to fix some vertices. All vertices for which it is

`TRUE`

are kept at the coordinates supplied in the`seed`

matrix. It is ignored it`NULL`

or if`use.seed`

is`FALSE`

.- dim
Either ‘2’ or ‘3’, it specifies whether we want a two dimensional or a three dimensional layout. Note that because of the nature of the DrL algorithm, the three dimensional layout takes significantly longer to compute.

- ...
Passed to

`layout_with_drl`

.

##### Details

This function implements the force-directed DrL layout generator.

The generator has the following parameters:

- edge.cut
Edge cutting is done in the late stages of the algorithm in order to achieve less dense layouts. Edges are cut if there is a lot of stress on them (a large value in the objective function sum). The edge cutting parameter is a value between 0 and 1 with 0 representing no edge cutting and 1 representing maximal edge cutting.

- init.iterations
Number of iterations in the first phase.

- init.temperature
Start temperature, first phase.

- init.attraction
Attraction, first phase.

- init.damping.mult
Damping, first phase.

- liquid.iterations
Number of iterations, liquid phase.

- liquid.temperature
Start temperature, liquid phase.

- liquid.attraction
Attraction, liquid phase.

- liquid.damping.mult
Damping, liquid phase.

- expansion.iterations
Number of iterations, expansion phase.

- expansion.temperature
Start temperature, expansion phase.

- expansion.attraction
Attraction, expansion phase.

- expansion.damping.mult
Damping, expansion phase.

- cooldown.iterations
Number of iterations, cooldown phase.

- cooldown.temperature
Start temperature, cooldown phase.

- cooldown.attraction
Attraction, cooldown phase.

- cooldown.damping.mult
Damping, cooldown phase.

- crunch.iterations
Number of iterations, crunch phase.

- crunch.temperature
Start temperature, crunch phase.

- crunch.attraction
Attraction, crunch phase.

- crunch.damping.mult
Damping, crunch phase.

- simmer.iterations
Number of iterations, simmer phase.

- simmer.temperature
Start temperature, simmer phase.

- simmer.attraction
Attraction, simmer phase.

- simmer.damping.mult
Damping, simmer phase.

There are five pre-defined parameter settings as well, these are called drl_defaults$default, drl_defaults$coarsen, drl_defaults$coarsest, drl_defaults$refine and drl_defaults$final.

##### Value

A numeric matrix with two columns.

##### References

See the following technical report: Martin, S., Brown, W.M., Klavans, R., Boyack, K.W., DrL: Distributed Recursive (Graph) Layout. SAND Reports, 2008. 2936: p. 1-10.

##### See Also

`layout`

for other layout generators.

##### Examples

```
# NOT RUN {
g <- as.undirected(sample_pa(100, m=1))
l <- layout_with_drl(g, options=list(simmer.attraction=0))
# }
# NOT RUN {
plot(g, layout=l, vertex.size=3, vertex.label=NA)
# }
# NOT RUN {
# }
```

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