1
2 import visgraph.renderers as vg_render
3
4 example = '''
5 <?xml version="1.0" standalone="no"?>
6 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
7 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
8
9 <svg width="100%" height="100%" version="1.1"
10 xmlns="http://www.w3.org/2000/svg">
11
12 <rect x="20" y="20" rx="20" ry="20" width="250" height="100"
13 style="fill:red;stroke:black;stroke-width:5;opacity:0.5"/>
14 </svg>
15 '''
16
18
20 vg_render.GraphRenderer.__init__(self, graph)
21 self.svgfile = svgfile
22 self._node_xml = []
23 self._edge_xml = []
24
26 rectstr = '<rect x="%d" y="%d" width="10" height="10" style="fill:red;stroke:black;stroke-width:5;opacity:0.5"/>' % (xpos,ypos)
27 self._node_xml.append(rectstr)
28
30 pointstr = ' '.join([ '%d,%d' % (x,y) for x,y in points ])
31 edgestr = '<polyline points="%s" style="fill:white;stroke:red;stroke-width:2"/>' % pointstr
32 self._edge_xml.append(edgestr)
33
35
36 for nid,ninfo in graph.getNodes():
37 ninfo['size'] = (10,10)
38
41
43
44 f = file(self.svgfile,'wb')
45 f.write('<?xml version="1.0" standalone="no"?>\n')
46
47 xsize = self._vg_canvas_width
48 ysize = self._vg_canvas_height
49 f.write('<svg width="%d" height="%d" version="1.1" xmlns="http://www.w3.org/2000/svg">\n' % (xsize,ysize))
50 for x in self._node_xml:
51 f.write(x + '\n')
52 for x in self._edge_xml:
53 f.write(x + '\n')
54 f.write('</svg>\n')
55 f.close()
56
57 if __name__ == '__main__':
58
59 import visgraph.graphcore as vg_graphcore
60 import visgraph.layouts.dynadag as vg_dynadag
61 import visgraph.renderers.svgrend as vg_svgrend
62
63 g = vg_graphcore.HierarchicalGraph()
64
65 g.addNode('A', rootnode=True)
66 g.addNode('B')
67 g.addNode('C')
68 g.addNode('D')
69
70 g.addNode('E')
71 g.addNode('F')
72 g.addNode('G')
73
74 g.addEdge('A','B')
75 g.addEdge('A','C')
76
77 g.addEdge('B','D')
78 g.addEdge('B','E')
79
80 g.addEdge('C','F')
81 g.addEdge('C','G')
82
83 layout = vg_dynadag.DynadagLayout(g)
84 rend = vg_svgrend.SvgGraphRenderer(g, 'test.svg')
85
86 layout.renderGraph(rend)
87