def draw_graph(aData): g = gv.digraph("G") #gv.setv(g, "label", "TEST") #gv.setv(g, "rankdir", "LR") # Set node style #n = gv.protonode(g0) #gv.setv(n, "shape", "ellipse") # draw notes draw_note(g) # draw one common node: swith #draw_node(g, "swith", "swith", "swith") # draw subgraph for key in aData: (aHost, aNodes, aLinks) = key draw_host(g, aHost, aNodes, aLinks) # save file gv.write(g, "draw.dot") #generate graphic gv.layout(g, "dot") gv.render(g, "png", "l2_topology.png") gv.rm(g)
def render_graph(g, filename, output_dot = None): gv.setv(g, 'center', 'true') gv.setv(g, 'fontname', 'helvetica') gv.layout(g, 'dot') if (output_dot): gv.write(g, output_dot) gv.render(g, 'png', filename)
def out_graph(self): if self.depth > 1: self.generate_graph(1,0) else: first_node = self.get_node(1,0) n = gv.node(self.G, first_node.string()) gv.setv(n, "label", "%s|%d" % (first_node.string(), first_node.weight)) gv.layout(self.G, 'dot') #gv.render(self.G, 'xlib') gv.write(self.G, "tree.dot")
def testGraph(): gr = graph() gr.add_nodes([ "Portugal", "Spain", "France", "Germany", "Belgium", "Netherlands", "Italy" ]) gr.add_nodes([ "Switzerland", "Austria", "Denmark", "Poland", "Czech Republic", "Slovakia", "Hungary" ]) gr.add_nodes(["England", "Ireland", "Scotland", "Wales"]) gr.add_edge("Portugal", "Spain") gr.add_edge("Spain", "France") gr.add_edge("France", "Belgium") gr.add_edge("France", "Germany") gr.add_edge("France", "Italy") gr.add_edge("Belgium", "Netherlands") gr.add_edge("Germany", "Belgium") gr.add_edge("Germany", "Netherlands") gr.add_edge("England", "Wales") gr.add_edge("England", "Scotland") gr.add_edge("Scotland", "Wales") gr.add_edge("Switzerland", "Austria") gr.add_edge("Switzerland", "Germany") gr.add_edge("Switzerland", "France") gr.add_edge("Switzerland", "Italy") gr.add_edge("Austria", "Germany") gr.add_edge("Austria", "Italy") gr.add_edge("Austria", "Czech Republic") gr.add_edge("Austria", "Slovakia") gr.add_edge("Austria", "Hungary") gr.add_edge("Denmark", "Germany") gr.add_edge("Poland", "Czech Republic") gr.add_edge("Poland", "Slovakia") gr.add_edge("Poland", "Germany") gr.add_edge("Czech Republic", "Slovakia") gr.add_edge("Czech Republic", "Germany") gr.add_edge("Slovakia", "Hungary") # Draw as PNG with open("./country.viz", 'wb') as f: dot = write(gr, f) f.write(dot) gvv = gv.readstring(dot) gv.layout(gvv, 'dot') gv.render(gvv, 'png', 'europe.png') Image.open('europe.png').show()
def testGraph(): gr = graph() gr.add_nodes(["Portugal","Spain","France","Germany","Belgium","Netherlands","Italy"]) gr.add_nodes(["Switzerland","Austria","Denmark","Poland","Czech Republic","Slovakia","Hungary"]) gr.add_nodes(["England","Ireland","Scotland","Wales"]) gr.add_edge("Portugal", "Spain") gr.add_edge("Spain","France") gr.add_edge("France","Belgium") gr.add_edge("France","Germany") gr.add_edge("France","Italy") gr.add_edge("Belgium","Netherlands") gr.add_edge("Germany","Belgium") gr.add_edge("Germany","Netherlands") gr.add_edge("England","Wales") gr.add_edge("England","Scotland") gr.add_edge("Scotland","Wales") gr.add_edge("Switzerland","Austria") gr.add_edge("Switzerland","Germany") gr.add_edge("Switzerland","France") gr.add_edge("Switzerland","Italy") gr.add_edge("Austria","Germany") gr.add_edge("Austria","Italy") gr.add_edge("Austria","Czech Republic") gr.add_edge("Austria","Slovakia") gr.add_edge("Austria","Hungary") gr.add_edge("Denmark","Germany") gr.add_edge("Poland","Czech Republic") gr.add_edge("Poland","Slovakia") gr.add_edge("Poland","Germany") gr.add_edge("Czech Republic","Slovakia") gr.add_edge("Czech Republic","Germany") gr.add_edge("Slovakia","Hungary") # Draw as PNG with open("./country.viz", 'wb') as f: dot = write(gr,f) f.write(dot) gvv = gv.readstring(dot) gv.layout(gvv,'dot') gv.render(gvv,'png','europe.png') Image.open('europe.png').show()
graph = gv.digraph('filegraph') for dirpath, dirnames, filenames in os.walk('src'): try: subgraph = subgraphs[clean(dirpath)] except: subgraph = gv.graph(graph, 'cluster_' + clean(dirpath)) gv.setv(subgraph, 'label', dirpath) subgraphs[clean(dirpath)] = subgraph print clean(dirpath) print dirnames print filenames for filename in filenames: node = gv.node(subgraph, clean(filename)) gv.setv(node, 'label', filename) for dirname in dirnames: subgraphfun(subgraph, clean(os.path.join(dirpath,dirname)), dirname) gv.write(graph, 'graph.dot') os.system('dot -Tpdf -ograph.pdf graph.dot') #os.system('neato -Tpdf -ofilegraph.pdf filegraph.dot')
return ok if __name__ == "__main__": name = sys.argv[1] if name[-4:] != '.dot': print "wrong name", name exit name = name[:-4] gr = gv.read(name + '.dot') m = gv.findnode(gr, 'main') gv.setv(m, 'color', 'green') while mark(): pass n = gv.firstnode(gr) while gv.ok(n): if gv.getv(n, 'color') != 'green': gv.setv(n, 'fillcolor', 'red') gv.setv(n, 'style', 'filled') in_degree = 0 e = gv.firstin(n) while gv.ok(e): in_degree += 1 e = gv.nextin(n, e) if in_degree == 1: gv.setv(n, 'shape', 'diamond') n = gv.nextnode(gr, n) gv.write(gr, name + '-new.dot') gv.layout(gr, 'dot') gv.render(gr) gv.render(gr, 'fig', name + '.fig')