def draw_graph(adjacency, name): g = Graph('G', filename=name) for node in adjacency: for Fout in adjacency[node]: #print str(node) + " " + str(Fout) g.edge(str(node), str(Fout)) g.view()
def draw_graph(self): """ Draw the Token Flow Graph. """ assert Graph is not None, "Could not import the package `graphviz'" tfg = Graph('TFG') # Draw nodes tfg.attr('node', shape='circle', fixedsize='True') for node in self.nodes.values(): tfg.node(node.id) # Draw redundant arcs tfg.attr('edge', arrowhead='dotnormal', arrowtail='none') for node in self.nodes.values(): for redundant in node.redundant: tfg.edge(node.id, redundant.id, dir='both') # Draw agglomerated arcs tfg.attr('edge', arrowhead='normal', arrowtail='odot') for node in self.nodes.values(): for agglomerated in node.agglomerated: tfg.edge(node.id, agglomerated.id, dir='both') tfg.view()
def Drawnet_notag(opt_name, tn_names, edges_info, dangling_infos, figsize=[6, 5], engine='circo', format="pdf"): ## edges_info[i] = (tn1_name,tn2_name,common_label) g = Graph(opt_name, filename=opt_name + ".gv", engine=engine, format=format) #g = Graph(engine=engine,format=format) g.attr(size='%d,%d' % (figsize[0], figsize[1])) ## insert node! g.attr('node', shape='circle') for i in tn_names: g.node(i) g.attr('node', shape='plaintext') for i in dangling_infos: g.node(i[0]) #print(edges_info) ## edges! contracted: for i in edges_info: g.edge(i[0], i[1], label="%d" % (i[2])) ## edges! non-contracted: for i in dangling_infos: g.edge(i[0], i[1]) g.view()
def draw(self, filename='test.gv'): """ Отрисовывает граф используя библиотеку Graphviz. Больше примеров: https://graphviz.readthedocs.io/en/stable/examples.html """ g = Graph('G', filename=filename, engine='sfdp') for v, attr in enumerate(self.attributes): if 'color' in '': g.attr('node', style='filled', fillcolor=attr['color']) if attr['color'] == 'black': g.attr('node', fontcolor='white') else: g.attr('node', style='', color='', fontcolor='', fillcolor='') if 'name' in '': g.node(str(v), label='{} ({})'.format(attr['name'], v)) else: g.node(str(v)) for i in range(self.number_of_vertices()): for j in self.adj[i]: if i < j: g.edge(str(i), str(j)) g.view()
class render: def __init__(self,our_graph,wt_dist,colour_list,tup=[-1,-1]): self.G = Graph(format='png') self.edgeList = [] #i=0 for vertex in our_graph.vertList: self.G.node(str(vertex),label='INF' if wt_dist[vertex]==10000000 else str(wt_dist[vertex]),color='red' if colour_list[vertex] else 'black') for adjvertices in our_graph.vertList[vertex].connectedTo: if tup==[vertex,adjvertices] or tup==[adjvertices,vertex]: cl='green' else: cl='black' #print vertex.connectedTo[adjvertices] if our_graph.vertList[vertex].connectedTo[adjvertices][1] in self.edgeList: pass else: self.G.edge(str(vertex),str(adjvertices),str(our_graph.vertList[vertex].connectedTo[adjvertices][0]),color=cl) self.edgeList.append(our_graph.vertList[vertex].connectedTo[adjvertices][1]) #self.G.edge(str(vertex),str((vertex+1)%10),label='edge',color='green') self.G.view()
def get_topologie_data(self): node_data = {} for node in self.nodes: node_data[str(node.id)] = { "neighbors": node.neighbors } from graphviz import Graph graph = Graph("PLC-Topologie", filename="topologie.gv") # graph.edge(str(Node.id), str(alt_id)) tmp = [] del_list = [] for node in self.nodes: for neighbor in node.neighbors: if str(node.id) == neighbor: del_list.append(node.id) elif str(node.id) + ":" + str(neighbor) not in tmp and str(neighbor) + ":" + str(node.id) not in tmp: tmp.append(str(node.id) + ":" + str(neighbor)) graph.edge(str(node.id), str(neighbor)) for node in self.nodes: if node.id in del_list: del node.neighbors[str(node.id)] graph.view() return node_data
def draw_graph(): g = Graph(format='svg', engine='dot', graph_attr={'splines': 'false'}) g.body.extend(['rankdir=LR']) g.node('STUDENT', shape='rectangle', style='filled', fillcolor='red') g.node('Name', shape='ellipse') g.node('address', shape='ellipse') g.node('Roll Number', shape='ellipse') g.edge('STUDENT', 'Name') g.edge('STUDENT', 'address') g.edge('STUDENT', 'Roll Number') g.node('COURSE', shape='rectangle', style='filled', fillcolor='red') g.node('Title', shape='ellipse') g.node('Level', shape='ellipse') g.node('Credits', shape='ellipse') g.node('Course_Id', shape='ellipse') g.edge('COURSE', 'Title') g.edge('COURSE', 'Level') g.edge('COURSE', 'Credits') g.edge('COURSE', 'Course_Id') g.node('TAKES', shape='diamond', style='filled', fillcolor='green') g.edge('STUDENT', 'TAKES:w') g.edge('COURSE', 'TAKES:e') #g.render('example.svg') g.view()
def main(): start_time = time.time() graph_attri = {'overlap': 'false', 'spines': 'ortho', 'nodesep': '0.5'} node_attri = {'shape': 'circle', 'color': 'green'} dot = Graph('G', filename='test.gv', engine='neato', node_attr=node_attri, graph_attr=graph_attri) subreddits = [ 'liberal', 'democrats', 'politics', 'democraticparty', 'BlueMidterm2018' ] conns = group_connectivity(subreddits, 100) for i in range(0, 5): dot.node(subreddits[i]) for j in range(0, 5): for k in range(j, 5): if k == j: pass else: dot.edge(subreddits[j], subreddits[k], label=str( connectivity(subreddits[j], subreddits[k], conns))) print("---- %s seconds ----" % (time.time() - start_time)) dot.view()
def main(): SIZE = 20 PLOIDY = 2 MUTATIONS = 2 indices = range(SIZE) # Build fake data seqA = list("0" * SIZE) allseqs = [seqA[:] for x in range(PLOIDY)] # Hexaploid for s in allseqs: for i in [choice(indices) for x in range(MUTATIONS)]: s[i] = "1" allseqs = [make_sequence(s, name=name) for (s, name) in \ zip(allseqs, [str(x) for x in range(PLOIDY)])] # Build graph structure G = Graph("Assembly graph", filename="graph") G.attr(rankdir="LR", fontname="Helvetica", splines="true") G.attr(ranksep=".2", nodesep="0.02") G.attr('node', shape='point') G.attr('edge', dir='none', penwidth='4') colorset = get_map('Set2', 'qualitative', 8).mpl_colors colorset = [to_hex(x) for x in colorset] colors = sample(colorset, PLOIDY) for s, color in zip(allseqs, colors): sequence_to_graph(G, s, color=color) zip_sequences(G, allseqs) # Output graph G.view()
def plot(overlapping_policies): g = Graph("G", filename="Overlapping_policies", engine="sfdp") for key in overlapping_policies.keys(): for value in overlapping_policies[key]: g.edge(key, value) overlapping_policies[value].remove(key) g.view()
def init_graph(): dot = Graph(comment='Topology') dot.node('A') dot.node('B') dot.node('C') dot.node('D') dot.node('E') dot.node('F') dot.node('G') dot.node('H') dot.node('I') dot.edge('A', 'B', label='2') dot.edge('A', 'D', label='5') dot.edge('B', 'C', label='7') dot.edge('B', 'E', label='1') dot.edge('C', 'F', label='9') dot.edge('D', 'E', label='3') dot.edge('D', 'G', label='3') dot.edge('E', 'H', label='30') dot.edge('E', 'F', label='2') dot.edge('H', 'G', label='5') dot.edge('H', 'I', label='8') dot.edge('F', 'I', label='6') dot.view()
def BFSGetDist(self,v0=0): #搜索无权图其他点到 v0 的最短路径 Q = Queue() v = v0 path = [[v] for i in range(self.vexnum)] self.visited[v] = True Q.enqueue(v) while not Q.empty(): v = Q.dequeue() for w in self.arc[v]: if self.visited[w] == False: self.visited[w] = True path[w] = path[v] + [w] Q.enqueue(w) for v in range(self.vexnum): if v != v0: print(len(path[v]) - 1,end=' ') print("->".join(str(i) for i in path[v])) vg = Graph('图及其应用') with open('case1.txt') as case: n = int(case.readline()) #n 表示图中的顶点数 for i in range(n): vg.node(name=str(i),color='red') vexs = [str(i) for i in range(n)] matrix = [[0] * n for i in range(n)] edges = case.readlines() arcnum = len(edges) for edge in edges: v1,v2 = map(int, edge.split()) matrix[v1][v2] = 1 matrix[v2][v1] = 1 #无向图 vg.edge(str(v1),str(v2),color='blue') g = MGraph(vexs,matrix,arcnum) alg = ALGraph(vexs,matrix,arcnum) g.findArticul() alg.BFSGetDist(0) vg.view()
def color(self): # Dict to save color color = defaultdict(list) for node in self.graph: if (len(color) == 0): color[0].append(node) continue else: for i in range(len(color)): temp = 0 for colored_node in color[i]: if (node in self.graph[colored_node]): temp = 1 break if (temp == 1): continue else: color[i].append(node) break if (node not in color[i]): color[len(color)].append(node) # Out put file output_file = Graph('Coloring graph', filename='Greedy Coloring Graph.gv',strict="True") output_file.attr( shape="circle", size='1') list_color=["red","blue", "yellow","green","gray","snow","DarkOrange1","MediumPurple1","khaki4","orchid", "cyan2", "blue violet", "GreenYellow", "HotPink", "LightGoldenrod4","DarkSeaGreen", "sienna","brown"] for i in range (len(color)): for node in color[i]: output_file.node(str(node),fillcolor=list_color[i],style="filled") for opp_node in self.graph[node]: output_file.edge(str(node),str(opp_node)) output_file.view()
def graphs(file,deleted_node):#methodos gia to proairetiko meros from graphviz import Graph dot = Graph(node_attr={'color': 'lightblue2', 'style': 'filled'},format='jpg',engine='fdp') visited={} adjList=create_graph(file) deleted=False for x in adjList: visited[x]=False for key in adjList: for erased in deleted_node: if key==erased: dot.node(str(key),str(key),color='lightgrey') deleted=True if not deleted: dot.node(str(key),str(key)) deleted=False for i in adjList[key]: if not visited[i]: for erased in deleted_node:#elegxei an exoun diagraftei oi komvoi i kai key if erased==i or erased==key: deleted=True if not deleted:#den exoun diagraftei ara tous enono dot.edge(str(key),str(i)) deleted=False visited[key]=True dot.view()
def create_ref_mmap(self, strx): mm = Graph( name=f'mind_map{strx.id}', filename=f'media/mind_maps/mind_map{strx.id}.gv', strict=True, engine='fdp' ) # print(f'\nTitle {strx.get("title", "A")}') # other_nodes(mm, strx) cites = strx.page mlist = cites.split('DOI ') mnew_list = [] for x in mlist: # print(x) # print('--') x = x[:x.find(" ")] xt = x[:x.find(":")] # xy = xt[:xt.find("::")] mnew_list.append(xt) for k in mnew_list: gri = strx.DOI if strx.DOI else strx.title gri = gri[:gri.find(":")] mm.edge(gri, k) # print(f'- {k}') # print('\n') mm.view()
def draw_graph(graph, edges): g = Graph() for node in graph.get_nodes(): g.node(node) for edge in edges: g.edge(edge[0], edge[1], minlen='2') g.view("./grafiPDF/grafo")
def visaoSemantica(no): if(no): grafico = Graph('G', filename='Tree.gv', strict=True) desenhagrafico(no, grafico) grafico.node_attr.update(color='lightblue2', style='filled') grafico.view()
def gen_graph_from_nodes(nodes, type_fail=None): graph = Graph(format='png', strict=True) graph.node_attr['fontname'] = 'Courier New' graph.edge_attr['fontname'] = 'Courier New' for node in nodes: graph.node( _type_str(node.type), '{type: %s|ast_node: %s|parent\'s type: %s}' % (_type_str(node.type), node.ast_node.as_string().replace( '<', '\\<').replace('>', '\\>') if node.ast_node else 'None', _type_str(node.parent.type) if node.parent else 'NA'), shape='record', style='rounded') for neighb, ctx_node in node.adj_list: graph.edge(_type_str(node.type), _type_str(neighb.type), label=(f' {ctx_node.as_string()}' if ctx_node else '')) if type_fail: graph.node('tf', '{TypeFail|src_node: %s}' % (type_fail.src_node.as_string().replace('<', '\\<').replace( '>', '\\>') if type_fail.src_node else 'None'), shape='record') graph.edge('tf', _type_str(type_fail.tnode1.type), style='dashed') graph.edge('tf', _type_str(type_fail.tnode2.type), style='dashed') graph.view('tnode_graph')
def main(): SIZE = 20 PLOIDY = 2 MUTATIONS = 2 indices = range(SIZE) # Build fake data seqA = list("0" * SIZE) allseqs = [seqA[:] for x in range(PLOIDY)] # Hexaploid for s in allseqs: for i in [choice(indices) for x in range(MUTATIONS)]: s[i] = "1" allseqs = [make_sequence(s, name=name) for (s, name) in \ zip(allseqs, [str(x) for x in range(PLOIDY)])] # Build graph structure G = Graph("Assembly graph", filename="graph") G.attr(rankdir="LR", fontname="Arial", splines="true") G.attr(ranksep=".2", nodesep="0.02") G.attr('node', shape='point') G.attr('edge', dir='none', penwidth='4') colorset = get_map('Set2', 'qualitative', 8).mpl_colors colorset = [to_hex(x) for x in colorset] colors = sample(colorset, PLOIDY) for s, color in zip(allseqs, colors): sequence_to_graph(G, s, color=color) zip_sequences(G, allseqs) # Output graph G.view()
def draw_expr(expr, title="Standard Expression"): from graphviz import Graph graph = Graph(title, filename=title) graph.attr(rankdir="TD", size="50") typeMapper = { OPType.Star: "*", OPType.Plus: "+", OPType.Concat: "@", OPType.Union: "|", OPType.Symbol: "S", OPType.Questionmark: "?" } counter = 0 def inner(expr): nonlocal counter label_ = "" color_ = "red" if expr.isSymbol(): label_ = expr.getSymbol() color_ = "blue" else: label_ = typeMapper[expr.opType] graph.node(str(counter), shape="circle", label=label_, color=color_) expr.name = str(counter) # Monkey patching !! counter += 1 if expr.lhs != None: inner(expr.lhs) graph.edge(expr.name, expr.lhs.name) if expr.rhs != None: inner(expr.rhs) graph.edge(expr.name, expr.rhs.name) inner(expr) graph.view()
def geraArvoreGraph(no, Erros, bol): if(bol): if not Erros : printArvore(no) if(no) : grafico = Graph('G', filename='Tree.gv', strict=True) desenhagrafico(no, grafico) grafico.node_attr.update(color='lightblue2', style='filled') grafico.view()
def gen_graph(arr): dot = Graph(comment='Topology') if 0 in arr: dot.node('A', color="red") else: dot.node('A') if 1 in arr: dot.node('B', color="red") else: dot.node('B') if 2 in arr: dot.node('C', color="red") else: dot.node('C') if 3 in arr: dot.node('D', color="red") else: dot.node('D') if 4 in arr: dot.node('E', color="red") else: dot.node('E') if 5 in arr: dot.node('F', color="red") else: dot.node('F') if 6 in arr: dot.node('G', color="red") else: dot.node('G') if 7 in arr: dot.node('H', color="red") else: dot.node('H') if 8 in arr: dot.node('I', color="red") else: dot.node('I') convert = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'] for i in range(len(arr) - 1): dot.edge(convert[arr[i]], convert[arr[i + 1]], color="red") dot.edge('A', 'B', label='2') dot.edge('A', 'D', label='5') dot.edge('B', 'C', label='7') dot.edge('B', 'E', label='1') dot.edge('C', 'F', label='9') dot.edge('D', 'E', label='3') dot.edge('D', 'G', label='3') dot.edge('E', 'H', label='30') dot.edge('E', 'F', label='2') dot.edge('H', 'G', label='5') dot.edge('H', 'I', label='8') dot.edge('F', 'I', label='6') dot.view()
def graph_draw(nodes, edges, name): g = Graph(name, format="png") for node in nodes: g.node(str(node)) for edge in edges: x = edge.split(' ')[0] y = edge.split(' ')[1] g.edge(x, y) g.view()
def renderiza_grafo(self, lugar_para_gerar, nome_grafo): A = Graph(comment=nome_grafo, filename=(lugar_para_gerar + '/Grafo.gv'), engine='dot') for vertice in self.meuGrafo.nodes_iter(data=False): A.node(vertice.encode("utf8")) for aresta_A, aresta_B, dados_aresta in self.meuGrafo.edges_iter(data=True): peso_aresta = dict((chave, str(valor)) for chave, valor in dados_aresta.items()) peso_aresta['label'] = peso_aresta['weight'] del peso_aresta['weight'] A.edge(aresta_A, aresta_B, **peso_aresta) A.view()
def printSteiner(self, steiner_edges): g = GraphV('Gsa', filename='simulatedannealing.gv') # , engine='sfdp') for edge in self.edge_list: if tuple(edge) in steiner_edges: color = "red" else: color = "green" g.edge(str(edge[1]), str(edge[2]), color=color) print(g.source) g.view()
def graphvizView(self): # assume graphviz (https://pypi.python.org/pypi/graphviz and http://www.graphviz.org/) is installed. if not self.edges: return from graphviz import Graph g = Graph('Graph') for e in self.edges: # print(e) g.edge(*e) #print(g.source) g.view()
def showFamilyTree(root_child_elements): """US52 - Displays a GEDCOM file as a family tree and saves as a PDF""" family = Graph('Family Tree', comment="family tree") family.attr(rankdir='TB') cluster = 0 for element in root_child_elements: if isinstance(element, FamilyElement): husband = gedcom_parser.get_family_members(element, members_type='HUSB')[0] wife = gedcom_parser.get_family_members(element, 'WIFE')[0] children = gedcom_parser.get_family_members(element, members_type='CHIL') with family.subgraph(name=f'cluster_{cluster}') as graphGroup: graphGroup.attr(label=element.get_pointer()) with graphGroup.subgraph() as s: s.attr(rank='same') s.node(husband.get_pointer(), label=husband.get_name()[0], color='blue', style='filled', fillcolor='red' if listErrors(husband) else 'white') s.node(str(cluster), shape='point') s.node(wife.get_pointer(), label=wife.get_name()[0], color='lightpink', style='filled', fillcolor='red' if listErrors(wife) else 'white') family.edge(husband.get_pointer(), str(cluster), label='husband') family.edge(str(cluster), wife.get_pointer(), label='wife') with graphGroup.subgraph() as s: s.attr(rank='same') s.node(str(cluster) + "_1", shape='point') family.edge(str(cluster), str(cluster) + "_1", label='children') for child in children: s.node( child.get_pointer(), label=child.get_name()[0], color='black', style='filled', fillcolor='red' if listErrors(child) else 'white') family.edge(str(cluster) + "_1", child.get_pointer()) cluster += 1 family.view() return
def paint_the_root(jumper_list): dot = Graph('G', filename='recommendationNodes.gv') dot.attr('node', shape='doublecircle') dot.attr('node', shape='circle') node_before = jumper_list[0] for branch in set(jumper_list): dot.node(str(branch), str(branch)) for branch in jumper_list[1:]: dot.edge(str(node_before), str(branch)) node_before = str(branch) dot.view()
def graphGrammar(self): if self.gramatica != None: dot = Graph() dot.attr(splines = 'false') dot.node_attr.update(shape = 'record') dot.node_attr.update(center = 'false') dot.node(str(0), '{'+ self.gramatica.replace('\n', '\\l |')[:-1] +'}') try: dot.view() except: self.textEdit_2.setText('ERROR: No fue posible realizar el reporte gramatical por algun error desconocido.')
class Graphviz: def __init__(self): self.g = Graph('Projeto', filename='projeto.gv') def show(self): self.g.view() def add_node(self, peca): self.g.node(peca.nome) def add_edge(self, pai, filho): print(pai.nome) self.g.edge(pai.nome, filho.nome)
def main(road_path): g = Graph('G') f = open(road_path, 'r') f.readline() for line in f.readlines(): line = line.replace('(', '[') line = line.replace(')', ']') item = json.loads(line) g.edge(str(item[4]), str(item[5])) # if item[-1]: # g.edge(str(item[5]), str(item[4])) f.close() g.view()
def graphSimbolos(gramatica): if gramatica != None: dot = Graph() dot.attr(splines='false') dot.node_attr.update(shape='record') dot.node_attr.update(center='true') dot.node(str(0), '{' + gramatica.replace('\n', '|')[:-1] + '}') try: dot.view() except: print( 'ERROR: No fue posible realizar el reporte gramatical por algun error desconocido.' )
def main(): graph_attribute = {'overlap': 'false', 'splines': 'true', 'nodesep': '0.5'} node_attribute = {'shape': 'point', 'label': "", } dot = Graph('G', filename = 'test.gv', engine = 'fdp', node_attr = node_attribute, graph_attr = graph_attribute) dot.node('root', color = 'red') for i in range(0, 10): dot.node('user%d' % i) dot.edge('root', 'user%d' % i) for j in range(0, 3): dot.node('follow' + str(i) + ', ' + str(j)) dot.edge('follow' + str(i) + ', ' + str(j), 'user%d' % i) dot.view()
def outputToPdf(graph, fileName,sourceLables): e = Graph('NYC', filename=fileName, engine='dot') e.body.extend(['rankdir=LR', 'size="100,100"']) e.attr('node', shape='ellipse') e.attr("node",color='green', style='filled') edgeExists={} for label in sourceLables: e.node(str(label)) e.attr("node",color='lightblue2', style='filled') for node in graph.nodeIter(): for edge in node.neighborsIter(): if not edge[1] in edgeExists: e.attr("edge",labelcolor="blue") e.edge(str(node.label()),edge[1],str(int(edge[0]))+"m") edgeExists[node.label()]=1 edgeExists=None e.body.append(r'label = "\nIntersections in New York City\n"') e.body.append('fontsize=100') e.view()
def gen_graph_from_nodes(nodes, type_fail=None): graph = Graph(format='png', strict=True) graph.node_attr['fontname'] = 'Courier New' graph.edge_attr['fontname'] = 'Courier New' for node in nodes: graph.node(_type_str(node.type), '{type: %s|ast_node: %s|parent\'s type: %s}' % (_type_str(node.type), node.ast_node.as_string().replace('<', '\\<').replace('>', '\\>') if node.ast_node else 'None', _type_str(node.parent.type) if node.parent else 'NA'), shape='record', style='rounded') for neighb, ctx_node in node.adj_list: graph.edge(_type_str(node.type), _type_str(neighb.type), label=(f' {ctx_node.as_string()}' if ctx_node else '')) if type_fail: graph.node('tf', '{TypeFail|src_node: %s}' % (type_fail.src_node.as_string().replace('<', '\\<').replace('>', '\\>') if type_fail.src_node else 'None'), shape='record') graph.edge('tf', _type_str(type_fail.tnode1.type), style='dashed') graph.edge('tf', _type_str(type_fail.tnode2.type), style='dashed') graph.view('tnode_graph')
from graphviz import Graph import pandas as pd from os.path import join my_dir = 'C:\\Users\\John\\Documents\\2016\\Python\\JiraStates' full_jira_df = pd.read_csv(join(my_dir, 'jira_states.csv')) # print(df) issue_list = pd.Series.unique(full_jira_df["IssueNo"]) print(issue_list) mygraph = Graph('ER', filename='test.gv', engine='circo') # FIRST SET UP THE NODES mygraph.attr('node', shape='ellipse', width='10') mygraph.node('name0', label='name', color='red', width='10') mygraph.node('name1', label='name') #NOW JOIN THE NODES WITH EDGES mygraph.edge('name0', 'name1', color='blue', dir='forward', edgetooltip='a tool tip') #FINALLY DISPLAY THE GRAPH mygraph.view()
def plot(self): g = Graph(format='png') styles = { 'graph': { 'rankdir': self.direction, 'splines': 'line', 'label': 'Restricted Boltzmann Machine', 'labelloc': 't', ## t: top, b: bottom, c: center 'labeljust': 'c', ## l: left, r: right, c: center }, 'edge':{ 'color': 'black', # 'constraint': 'false', 'style': 'filled', } } self.add_styles(g, styles) vLayer = Graph('cluster_0') styles = { 'graph': { 'rankdir': 'LR', 'splines': 'line', 'label': 'Visible Units', 'labelloc': 't', ## t: top, b: bottom, c: center 'labeljust': 'c', ## l: left, r: right, c: center }, 'node': { 'shape': 'circle', 'color': 'lightblue3', 'label': '', }, 'edge':{ 'color': 'black', 'constraint': 'false', 'style': 'filled', } } self.add_styles(vLayer, styles) vNodes = ['v%d'%i for i in range(self.numVisible)] vNodes[-2] = (vNodes[-2], {'label': '...', 'style': '', 'shape': 'circle', 'color':'white'}) self.add_nodes(vLayer, vNodes) hLayer = Graph('cluster_1') styles = { 'graph': { 'rankdir': 'LR', 'splines': 'line', 'label': 'Hidden Units', 'labelloc': 'b', ## t: top, b: bottom, c: center 'labeljust': 'c', ## l: left, r: right, c: center }, 'node': { 'shape': 'circle', 'color': 'red3', 'label': '', }, 'edge':{ 'color': 'black', 'constraint': 'false', 'style': 'filled', } } self.add_styles(hLayer, styles) hNodes = ['h%d'%i for i in range(self.numHidden)] hNodes[-2] = (hNodes[-2], {'label': '...', 'style': '', 'shape': 'circle', 'color':'white'}) self.add_nodes(hLayer, hNodes) g.subgraph(hLayer) g.subgraph(vLayer) edges = [] for vn in vNodes: for hn in hNodes: if isinstance(vn, tuple): if isinstance(hn, tuple): edges.append(((vn[0], hn[0]), {'style':'invis'})) else: edges.append(((vn[0], hn), {'style': 'invis'})) else: if isinstance(hn, tuple): edges.append(((vn, hn[0]), {'style':'invis'})) else: edges.append((vn, hn)) self.add_edges(g, edges) print (g.source) g.view()
e.attr('node', shape='ellipse') e.node('name0', label='name') e.node('name1', label='name') e.node('name2', label='name') e.node('code') e.node('grade') e.node('number') e.attr('node', shape='diamond', style='filled', color='lightgrey') e.node('C-I') e.node('S-C') e.node('S-I') e.edge('name0', 'course') e.edge('code', 'course') e.edge('course', 'C-I', label='n', len='1.00') e.edge('C-I', 'institute', label='1', len='1.00') e.edge('institute', 'name1') e.edge('institute', 'S-I', label='1', len='1.00') e.edge('S-I', 'student', label='n', len='1.00') e.edge('student', 'grade') e.edge('student', 'name2') e.edge('student', 'number') e.edge('student', 'S-C', label='m', len='1.00') e.edge('S-C', 'course', label='n', len='1.00') e.attr(label=r'\n\nEntity Relation Diagram\ndrawn by NEATO') e.attr(fontsize='20') e.view()
#!/usr/bin/env python # process.py - http://www.graphviz.org/content/process from graphviz import Graph g = Graph('G', filename='process.gv', engine='sfdp') g.edge('run', 'intr') g.edge('intr', 'runbl') g.edge('runbl', 'run') g.edge('run', 'kernel') g.edge('kernel', 'zombie') g.edge('kernel', 'sleep') g.edge('kernel', 'runmem') g.edge('sleep', 'swap') g.edge('swap', 'runswap') g.edge('runswap', 'new') g.edge('runswap', 'runmem') g.edge('new', 'runmem') g.edge('sleep', 'runmem') g.view()