This website recently got a major rebuild; if you're missing something, let Lorna know.

Drawing Flow Diagrams with GraphViz



Recently I've been drawing a few different kinds of diagrams for a book I was writing, and been using graphviz to create them. Since I struggled a bit to get them going the way that I wanted them to, I am sharing them here (as much for my future self as anyone else visiting, but if they help you too then that's excellent).
The diagram itself looks like this - it's a simplified representation of choosing an access modifier in PHP:

|image1|

It's generated using the following code:


digraph {
start [label="Start"];

start -> decision;

decision [shape=diamond, label="Accessed externally?"];

decision -> public [label="Yes"];
decision -> notpublic [label="No"];
public [shape=box, label="public"];
notpublic [shape=diamond, label="Deny to children?"];
notpublic -> protected [label="No"]
notpublic -> private [label="Yes"]
protected [shape=box, label="protected"]
private [shape=box, label="private"]
{ rank=same; decision; public }
{ rank=same; notpublic; private }
}

I used a few different shapes to create the elements shown, and this is a directed graph. To show the decisions, I used labels on edges. And to line everything up as shown here, I used the rank=same settings, to put pairs of elements at the same level, even though graphviz would have started at the top and then added downwards arrows for each element.


In: tech
Tags: #book #graphviz #prophp #tech