Pygraphviz¶
Simple example¶
import pygraphviz as pgv
G=pgv.AGraph(strict=False,directed=True, rankdir = "LR")
test1 = "Test 1"
test2 = "Test 2"
test3 = "Test 3"
test4 = "Test 4"
G.add_node(test1)
G.add_node(test2)
G.add_node(test3)
G.add_node(test4)
G.add_edge(test1, test2)
G.add_edge(test2, test3)
G.add_edge(test2, test4)
e = G.get_edge(test2, test3)
e.attr["label"] = "no"
e = G.get_edge(test2, test4)
e.attr["label"] = "yes"
G.node_attr['shape']='box'
G.node_attr['style']='filled'
G.node_attr['fillcolor']='grey'
G.layout("dot")
G.draw('graph.png')
DOT code example¶
DOT code
digraph testdriven {
test [label="Write test", shape="box"] // some comment
run [label="Run test", shape="oval"]
code [label="Write code", shape="box"]
green [label="Green", shape="oval", style="filled", color="green"]
test->run
run->code
code->green
green->test [label="Next iteration", arrowhead="normal", style="solid"]
}
Python code to generate image
import tempfile
import pygraphviz as pgv
tmpfile = tempfile.NamedTemporaryFile(delete=False)
tmpfile.write(dot_code)
tmpfile.flush()
graph = pgv.AGraph(tmpfile.name)
graph.layout(prog="fdp")
graph.draw(out_file)
tmpfile.close()
How to test DOT code¶
dot -Tpng test.dot > output.png