pub fn layout_drl(
graph: &Graph,
seed: Option<&[[f64; 2]]>,
options: &DrlOptions,
weights: Option<&[f64]>,
) -> IgraphResult<Vec<[f64; 2]>>Expand description
Compute the DrL layout.
A multi-phase simulated annealing force-directed layout with density-grid repulsion. Designed for large graphs.
§Arguments
graph— input graph (treated as undirected).seed— optional initial positions. IfNone, random positions are generated.options— algorithm parameters (useDrlOptions::default()orDrlOptions::from_template(...)for presets).weights— optional edge weights (must be positive).
Returns [x, y] positions for each vertex.
§Errors
Returns InvalidArgument if weights contain non-positive values,
or if seed length doesn’t match vertex count.
§Examples
use rust_igraph::{Graph, layout_drl, DrlOptions, DrlTemplate};
let mut g = Graph::with_vertices(6);
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
g.add_edge(2, 3).unwrap();
g.add_edge(3, 4).unwrap();
g.add_edge(4, 5).unwrap();
let options = DrlOptions::from_template(DrlTemplate::Default);
let pos = layout_drl(&g, None, &options, None).unwrap();
assert_eq!(pos.len(), 6);
assert!(pos.iter().all(|p| p[0].is_finite() && p[1].is_finite()));