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.

```
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(...)

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`

.

A numeric matrix with two columns.

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.

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.

`layout`

for other layout generators.

```
# 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 {
# }
```

Run the code above in your browser using DataLab