Learn R Programming

igraph (version 1.2.11)

layout_with_drl: The DrL graph layout generator

Description

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.

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.

Value

A numeric matrix with two columns.

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.

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

Run this code
# 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