def __init__(self, _map=None): if _map: self._map = _map else: self._map = {} # strict=True ensures that graph is rewritten for any changes in node self._dot = DotGraph(strict=True) self.places = []
def gshow(g, attr=None, file_name='out/temp.gv', view=False): ecount = g.number_of_edges() if ecount > MAX_EDGES: print('GRAPH TOO BIG TO SHOW, EDGES=', ecount) return dot = DotGraph() for e in gen_dot_edges(g, attr=attr): f, t, w = e dot.edge(f, t, label=w) dot.render(file_name, view=view)
def gshow(g, attr=None, file_name='pics/temp.gv', view=False): ''' shows a networx DiGraph g using graphviz it could become slow on large graphs (above MAX_EDGES) ''' ecount = g.number_of_edges() if ecount > MAX_EDGES: print('GRAPH TOO BIG TO SHOW, EDGES=', ecount) return dot = DotGraph() for e in gen_dot_edges(g, attr=attr): f, t, w = e dot.edge(f, t, label=w) print('generated:', file_name, 'edges:', ecount) dot.render(file_name, view=view)
def xshow(gs, attr=None, file_name=None, view=False): """ shows a sequence of (possibly originating from the same, via a transformation) displayed together, left to right """ dot = DotGraph() ecount = 0 for i, g in enumerate(gs): k = g.number_of_edges() ecount += k if ecount > MAX_EDGES: print('GRAPH CHAIN TOO BIG TO SHOW, EDGES=', ecount) return for f, t, w in gen_dot_edges(g, attr=attr): mark = "@" + str(i) dot.edge(f + mark, t + mark, label=w) print('generated:', file_name, 'edges:', ecount) dot.render(file_name, view=view)
def gshow(g, attr=None, file_name='temp.gv', show=1): size = g.number_of_edges() nsize = g.number_of_nodes() if size < 3: print('GRAPH TOO SMALL TO SHOW:', file_name, 'nodes:', nsize, 'edges:', size) return elif size < 300: print('SHOWING:', file_name, 'nodes:', nsize, 'edges:', size) else: print('TOO BIG TO SHOW:', file_name, 'nodes:', nsize, 'edges:', size) return dot = DotGraph() for e in g.edges(): f, t = e if not attr: w = '' else: w = g[f][t].get(attr) if not w: w = '' dot.edge(str(f), str(t), label=str(w)) dot.render(file_name, view=show > 1)
def gshow(g, attr=None, file_name='temp.gv', show=1, json_save=True): size = g.number_of_edges() nsize = g.number_of_nodes() if size < 3: #ppp('GRAPH TOO SMALL TO SHOW:', file_name, 'nodes:',nsize,'edges:', size) pass return elif size < 3000: #ppp('SHOWING:',file_name, 'nodes:',nsize,'edges:', size) pass else: #ppp('TOO BIG TO SHOW:',file_name, 'nodes:',nsize,'edges:', size) return dot = DotGraph() es = [] for e in g.edges(): f, t = e if not attr: w = '' else: w = g[f][t].get(attr) if not w: w = '' if not isinstance(f, str): continue if not isinstance(t, str): continue f = f.replace(':', '.') t = t.replace(':', '.') f = str(f) t = str(t) w = str(w) dot.edge(f, t, label=w) if json_save: es.append((f, t, w)) if json_save: jfile = file_name + ".json" with wopen(jfile) as jf: json.dump(es, jf) dot.render(file_name, view=show > 1)