Skip to content

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 graph
DOT 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 edges
DOT 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 nodes
DOT 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 subgraph
DOT 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 components
DOT 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 nodes
DOT 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 nodes
DOT 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 -Tsvg
DOT 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 spot
DOT 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 spot
DOT 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 spot
DOT 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 spot
DOT 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 spot
DOT 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 spot
DOT 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 -Tsvg
DOT 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 -Tsvg
DOT 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 path
DOT 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 integration
DOT 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;
}