def reduce_graph(self, threshold=0):
if len(self.edges.keys()) == 0:
print "Run first create_graph()"
return False
self.edges_reduced = {}
self.graph = pydot.Dot(graph_type='digraph')
# iterate through nodes and edges and filter by value
for key in self.edges.keys():
# check for most visited nodes
if self.tree[key][1] > threshold * self.total:
# iterate over edges and connect most visited nodes
for parent_key in self.edges[key]:
if parent_key != "Last" and self.tree[parent_key][1] > threshold * self.total:
edge_label = ""
for grandparent_key in self.edges[key][parent_key].keys():
n = self.edges[key][parent_key][grandparent_key]
if self.tree[parent_key][1] > threshold * self.total and self.edges[key][parent_key][grandparent_key][1] > threshold * self.total:
if key not in self.edges_reduced:
self.edges_reduced[key] = { parent_key: { grandparent_key: n } }
if parent_key not in self.edges_reduced[key]:
self.edges_reduced[key].update({ parent_key: { grandparent_key: n } })
if grandparent_key not in self.edges_reduced[key][parent_key]:
self.edges_reduced[key][parent_key].update({ grandparent_key: n })
else:
self.edges_reduced[key][parent_key][grandparent_key] = n
edge_counter = self.edges[key][parent_key][grandparent_key][1]
edge_label = edge_label + "\n" + str(edge_counter) + " " + str(grandparent_key[0]) + "_" + str(grandparent_key[1]) + "_" + str(grandparent_key[2])
if edge_label != "":
new_edge = pydot.Edge(self.tree[parent_key][0], self.tree[key][0])
self.graph.add_node(self.tree[parent_key][0])
self.graph.add_node(self.tree[key][0])
self.graph.add_edge( new_edge )
new_edge.set_label( edge_label )
generate_graph.py 文件源码
python
阅读 31
收藏 0
点赞 0
评论 0
评论列表
文章目录