removed : from path, cos windows is silly
[wikirepo] / notes / Graphviz__Add_edges_without_changing_node_rank / index.mdwn
diff --git a/notes/Graphviz__Add_edges_without_changing_node_rank/index.mdwn b/notes/Graphviz__Add_edges_without_changing_node_rank/index.mdwn
new file mode 100644 (file)
index 0000000..6cd6880
--- /dev/null
@@ -0,0 +1,29 @@
+Sometimes to annotate a diagram (made with [GraphViz][]) it would be good to
+add extra edges.  For example, given the final analysis example from [KF86][]
+(figure 1) it would be helpful to show the path taken by the algorithm through
+this tree (see [kaf_orig.dot][] for the dot file).
+
+[[!img kaf_orig.png size=x200 caption="Figure 1: Final Analysis Data Structure"]]
+A naive addition of the algorithm path to the dot file is shown below:
+
+       n1 -> n2 -> n3 -> n5 -> n4 -> n7 -> n11 [color=red];
+
+When creating the layout dot treats all edges identically, giving the layout shown in figure 2 (see [kaf_unc.dot][]).
+
+[[!img kaf_unc.png size=x200 caption="Figure 2: Layout change after additional path"]]
+Setting the edge attribute `constrained` to false prevents the consideration of that edge in setting node ranks, so the code:
+
+       n1 -> n2 -> n3 -> n5 -> n4 -> n7 -> n11 [color=red, constrained=false];
+
+Gives the graph shown in figure 3, and in [kaf_final.dot][].
+
+[[!img kaf_final.png size=x200 caption="Figure 3: Original layout, after addition of `constrained` parameter"]]
+
+[GraphViz]: http://www.graphviz.org
+[KF86]: http://scholar.google.co.uk/scholar?cluster=3660947494175569795&hl=en&as_sdt=2000
+[kaf_orig.dot]: kaf_orig.dot
+[kaf_unc.dot]: kaf_unc.dot
+[kaf_final.dot]: kaf_final.dot
+
+[[!tag dot graphviz image]]