def draw(self, nth=None):
if self.get_root() is None:
with open("test_dot.dot", "w") as dfile:
dfile.write("strict digraph {\n\tnode [shape = record,height=.1];\n}")
pgv.AGraph("test_dot.dot").draw(self.file_path, prog="dot", format="png")
else:
code = lambda x: "n" + str(abs(x)) if x < 0 else "p" + str(abs(x))
self.graph = {}
self.get_graph(self.get_root())
dfile = open("test_dot.dot", "w")
dfile.write("strict digraph {\n\tnode [shape = record,height=.1];\n")
for key in self.graph:
if nth is not None and nth == key:
dfile.write(
"\tnode{0} [label = \"<f0> |<f1> {1}|<f2> \"] [style=filled ,fillcolor = green];\n".format(
code(key), key))
else:
dfile.write("\tnode{0} [label = \"<f0> |<f1> {1}|<f2> \"];\n".format(code(key), key))
for key in self.graph:
for value in self.graph[key]:
dfile.write("\t\"node{0}\":{1}->\"node{2}\":f1;\n".format(code(key), "f0"
if self.graph[key][value]['child_status'] == 'left'
else "f2", code(value)))
dfile.write("}")
dfile.close()
pgv.AGraph("test_dot.dot").draw(self.file_path, prog="dot", format="png")
评论列表
文章目录