score.layout() evaluates a realized layout without assuming a
canonical embedding. It is the low-level scoring helper behind
compare.layouts() and is most useful when you already have
one realized layout in hand, for example from a cached run or another graph
drawing tool. For real-world graphs, quality is judged by graph-distance
faithfulness, edge-length consistency, separation of non-neighbors, and
optionally edge crossings or cluster separation.
Usage
score.layout(
coords,
edges = NULL,
n = NULL,
adj_list = NULL,
weight_list = NULL,
edge_weights = NULL,
clusters = NULL,
sample.size.stress = 2000L,
sample.size.nonedge = 5000L,
stress.seed = 1L,
nonedge.seed = 1L,
edge.crossings = c("auto", "always", "never"),
edge.crossings.max.edges = 1000L
)Arguments
- coords
Numeric coordinate matrix with 2 or 3 columns.
- edges
Two-column integer matrix of edges (1-based vertex ids).
- n
Number of vertices. If omitted with
adj_list, defaults tolength(adj_list). If omitted withedges, defaults tonrow(coords).- adj_list
Adjacency list (1-based) for undirected graphs.
- weight_list
Optional parallel list of positive edge weights.
- edge_weights
Optional positive edge-weight vector parallel to
edges.- clusters
Optional cluster or community labels of length
nrow(coords). When supplied,cluster.separationis reported.- sample.size.stress
Number of vertex pairs sampled for
sampled.stress.- sample.size.nonedge
Number of non-edge pairs sampled for
sampled.nonedge.sep.ratio.- stress.seed
RNG seed used for the stress sample.
- nonedge.seed
RNG seed used for the non-edge sample.
- edge.crossings
How to compute
edge.crossingsfor 2D layouts:"auto"computes exact crossings only when the graph is small enough,"always"always computes them, and"never"skips them.- edge.crossings.max.edges
Edge-count threshold used by
edge.crossings = "auto".
Examples
edges <- edges.mesh(5, 5)
coords <- grip(edges, n = 25, dim = 2, preset = "mesh", seed = 1)
score.layout(coords, edges = edges, n = 25)
#> n.vertices n.edges dim sampled.stress edge.length.cv median.edge.length
#> 1 25 40 2 9.190075 0.05524193 26.51208
#> sampled.nonedge.sep.ratio edge.crossings cluster.separation
#> 1 1.28633 0 NA