|
| |
| Navigation |
Synopsis Graph layout.
Function
Figure graph(Figures nodes, list[Edge] edges, FProperty props...)
Description Takes a list of nodes and a list of edges and draws a graph.
The nodes can be arbitrary figures that should have a name (using the id property).
The edges determine connections between named nodes.
The following constraints apply:
Examples
nodes = [ box(text("A"), id("A"), size(50), fillColor("lightgreen")),
box(text("B"), id("B"), size(60), fillColor("orange")),
ellipse( text("C"), id("C"), size(70), fillColor("lightblue")),
ellipse(text("D"), id("D"), size(200, 40), fillColor("violet")),
box(text("E"), id("E"), size(50), fillColor("silver")),
box(text("F"), id("F"), size(50), fillColor("coral"))
];
edges = [ edge("A", "B"), edge("B", "C"), edge("B", "D"), edge("A", "C"),
edge("C", "E"), edge("C", "F"), edge("D", "E"), edge("D", "F"),
edge("A", "F")
];
render(graph(nodes, edges, hint("layered"), gap(100)));
nodes = [ box(text("A"), id("A"), fillColor("green")),
box(text("B"), id("B"), fillColor("red")),
box(text("C"), id("C"), fillColor("blue")),
box(text("D"), id("D"), fillColor("purple")),
box(text("E"), id("E"), fillColor("lightblue")),
box(text("F"), id("F"), fillColor("orange")),
box(text("G"), id("G"), fillColor("brown")),
box(text("H"), id("H"), fillColor("black")),
box(text("I"), id("I"), fillColor("grey")),
box(text("J"), id("J"), fillColor("white")),
box(text("K"), id("K"), fillColor("deeppink")),
box(text("L"), id("L"), fillColor("deeppink")),
box(text("M"), id("M"), fillColor("deeppink"))
];
edges = [ edge("A", "B"), edge("A", "C"), edge("A", "D"),
edge("B", "E"), edge("B", "F"), edge("B", "G"),
edge("C", "H"), edge("C", "I"), edge("C", "J"),
edge("D", "K"), edge("D", "L"), edge("D", "M"),
edge("K", "G"), edge("A", "G")
];
render(graph(nodes, edges, hint("layered"), std(size(30)), gap(40)));
Figure n(str nm) = box(text(nm), id(nm), grow(1.2), fillColor(color("yellow", 0.7)));
nodes = [n("joe"), n("food"), n("dog"), n("tea"), n("cat"), n("table"), n("plate"),
n("mouse"), n("cup"), n("spoon"), n("fork"), n("flea1"), n("flea2"), n("knife")];
edges = [edge("joe", "food"), edge("joe", "dog"), edge("joe", "tea"), edge("joe", "cat"),
edge("joe", "table"), edge("table", "plate"), edge("plate", "food"),
edge("food", "mouse"), edge("food", "dog"), edge("mouse", "cat"),
edge("table", "cup"), edge("cup", "tea"), edge("dog", "cat"), edge("cup", "spoon"),
edge("plate", "fork"), edge("dog", "flea1"), edge("dog", "flea2"),
edge("flea1", "flea2"), edge("plate", "knife")];
render(graph(nodes, edges, hint("spring"), size(500), gap(20)));
Pitfalls
|