neato — 18 goldens
Spring-model (Kamada–Kawai) layout for undirected graphs. Each graph below is rendered live in your browser by the library.
rendering…
neato-simpleiterative5-node undirected graphDOT source
// @knowvah/dot-engine reference input: 5-node undirected graph
// engine: neato
// tolerance: iterative
graph G {
A -- B;
B -- C;
C -- D;
D -- E;
E -- A;
}
rendering…
neato-weightediterative5-node undirected graph with len attributes on edgesDOT source
// @knowvah/dot-engine reference input: 5-node undirected graph with len attributes
// engine: neato
// tolerance: iterative
graph G {
A -- B [len=1.0];
B -- C [len=2.0];
C -- D [len=1.5];
D -- E [len=3.0];
E -- A [len=1.0];
}
rendering…
neato-diamonditerativeUndirected graph with diamond-shaped nodesDOT source
// @knowvah/dot-engine reference input: nodes with shape=diamond
// engine: neato
// tolerance: iterative
graph G {
node [shape=diamond];
A -- B;
B -- C;
C -- D;
D -- A;
A -- C;
}
rendering…
neato-clusteriterativeUndirected graph with a cluster subgraphDOT source
// @knowvah/dot-engine reference input: undirected graph with a cluster subgraph
// engine: neato
// tolerance: iterative
graph G {
subgraph cluster_0 {
label="Group";
A -- B -- C;
}
D -- A;
D -- C;
}
rendering…
neato-disconnectediterativeTwo 3-node undirected componentsDOT source
// @knowvah/dot-engine reference input: two 3-node undirected components
// engine: neato
// tolerance: iterative
graph G {
A -- B -- C;
D -- E -- F;
}
rendering…
neato-polygoniterativeUndirected graph with hexagonal polygon nodesDOT source
// @knowvah/dot-engine reference input: nodes with shape=polygon sides=6
// engine: neato
// tolerance: iterative
graph G {
node [shape=polygon sides=6];
A -- B;
B -- C;
C -- D;
D -- A;
}
rendering…
neato-circleiterativeUndirected graph with circle-shaped nodesDOT source
// @knowvah/dot-engine reference input: nodes with shape=circle
// engine: neato
// tolerance: iterative
graph G {
node [shape=circle];
A -- B;
B -- C;
C -- A;
C -- D;
D -- E;
}
rendering…
neato-tiny-multi-edgeiterative3-node undirected graph with doubled edge; libm-chaotic: ARM libm vs Apple libm, maxDelta=7.08pt; drift pinned by portReference; ref: graphviz 15.0.0 dot -Kneato -TsvgDOT source
// @knowvah/dot-engine reference input: 3-node undirected graph with a doubled edge
// engine: neato
// tolerance: iterative
graph G {
A -- B;
A -- B;
B -- C;
}
rendering…
neato-epsiloniterativeepsilon sets the stress convergence threshold; ref: graphviz 15.0.0 neato -Tsvg; closes an attr-frequency blind spotDOT source
// @knowvah/dot-engine reference input: neato epsilon sets the stress-majorization convergence threshold
// engine: neato
// tolerance: iterative
digraph G {
epsilon=0.1;
a -> b -> c -> d -> a;
a -> c; b -> d; d -> e; e -> f; f -> a;
}
rendering…
neato-maxiteriterativemaxiter caps stress-majorization iterations; ref: graphviz 15.0.0 neato -Tsvg; closes an attr-frequency blind spotDOT source
// @knowvah/dot-engine reference input: neato maxiter caps the stress-majorization iteration count
// engine: neato
// tolerance: iterative
digraph G {
maxiter=2;
a -> b -> c -> d -> a;
a -> c; b -> d; d -> e; e -> f; f -> a;
}
rendering…
neato-startiterativestart seeds the initial random placement; ref: graphviz 15.0.0 neato -Tsvg; closes an attr-frequency blind spotDOT source
// @knowvah/dot-engine reference input: neato start seeds the initial random placement
// engine: neato
// tolerance: iterative
digraph G {
start=7;
a -> b -> c -> d -> a;
a -> c; b -> d; d -> e; e -> f; f -> a;
}
rendering…
neato-overlap-scalingiterativeoverlap_scaling scales the PRISM overlap-removal step; ref: graphviz 15.0.0 neato -Tsvg; closes an attr-frequency blind spotDOT source
// @knowvah/dot-engine reference input: neato overlap_scaling scales the PRISM overlap-removal step
// engine: neato
// tolerance: iterative
digraph G {
overlap=prism; overlap_scaling=-5;
a -> b -> c -> d -> a;
a -> c; b -> d; d -> e; e -> f; f -> a;
}
rendering…
neato-overlap-shrinkiterativeoverlap_shrink toggles the PRISM shrink pass; ref: graphviz 15.0.0 neato -Tsvg; closes an attr-frequency blind spotDOT source
// @knowvah/dot-engine reference input: neato overlap_shrink toggles the PRISM shrink pass
// engine: neato
// tolerance: iterative
digraph G {
overlap=prism; overlap_shrink=false;
a -> b -> c -> d -> a;
a -> c; b -> d; d -> e; e -> f; f -> a;
}
rendering…
neato-piniterativepin=true holds a node at its pos=; ref: graphviz 15.0.0 neato -Tsvg; closes an attr-frequency blind spotDOT source
// @knowvah/dot-engine reference input: neato pin=true holds a node at its
// pos= instead of letting the solver move it.
// engine: neato
// tolerance: iterative
digraph G {
a [pos="10,10", pin=true];
b [pos="20,20"];
c;
a -> b; b -> c; c -> a;
}
rendering…
neato-multisplineiterativepinned parallel-edge pairs with on-corridor blockers drive the GTS/CDT multispline router (mkRouter/makeMultiSpline); ref: headless oracle neato -TsvgDOT source
graph G {
layout=neato
splines=true
node [shape=ellipse width=0.5 height=0.35]
o1 [pos="-1,0!"]
o2 [pos="5,0!"]
o3 [pos="2,-1.2!"]
a [pos="0,0!"]
b [pos="4,0!"]
m1 [pos="1.3,0.05!"]
m2 [pos="2.7,-0.05!"]
a -- b
a -- b
a -- b
c [pos="0,1.6!"]
d [pos="4,1.6!"]
n1 [pos="2,1.62!"]
c -- d
c -- d
}
rendering…
neato-ratio-aspectiterativeratio=0.5 + size under neato; drives neato set-aspect/ratio scaling; ref: headless oracle -TsvgDOT source
graph R {
layout=neato
ratio=0.5
size="6,6"
a -- b -- c -- d -- a
a -- c
e -- a
}
rendering…
c90-cdt-concentrate-corridoriterativepinned multi-edge corridor driving the multispline/CDT boundary-port pathDOT source
graph G {
layout=neato
splines=true
concentrate=true
node [shape=ellipse width=0.5 height=0.35]
o1 [pos="-1,0!"]
o2 [pos="5,0!"]
o3 [pos="2,-1.2!"]
a [pos="0,0!"]
b [pos="4,0!"]
m1 [pos="1.3,0.05!"]
m2 [pos="2.7,-0.05!"]
a -- b
a -- b
a -- b
}
rendering…
c90-neato-overlap-ratioiterativeoverlap=false (PRISM) + ratio=fill/size + pinned pos!: overlap-prism/set-aspect/init pipeline integrationDOT source
digraph c90NeatoOverlapRatio {
ratio="fill";
size="4,3";
overlap="false";
A [pos="0,0!", width=1, height=1];
B [pos="0.3,0.2!", width=1, height=1];
C [pos="2,2!", width=1, height=1];
D [pos="2.2,2.1!", width=1, height=1];
A -> B;
B -> C;
C -> D;
}