Merge neco to nepi-3.0
[nepi.git] / src / nepi / util / plot.py
1 import networkx
2 import tempfile
3
4 class Plotter(object):
5     def __init__(self, box):
6         self._graph = networkx.Graph(graph = dict(overlap = "false"))
7
8         traversed = set()
9         self._traverse_boxes(traversed, box)
10
11     def _traverse_boxes(self, traversed, box):
12         traversed.add(box.guid)
13
14         self._graph.add_node(box.label, 
15                 width = 50/72.0, # 1 inch = 72 points
16                 height = 50/72.0, 
17                 shape = "circle")
18
19         for b in box.connections:
20             self._graph.add_edge(box.label, b.label)
21             if b.guid not in traversed:
22                 self._traverse_boxes(traversed, b)
23
24     def plot(self):
25         f = tempfile.NamedTemporaryFile(delete=False)
26         networkx.draw_graphviz(self._graph)
27         networkx.write_dot(self._graph, f.name)
28         f.close()
29         return f.name
30