我有一棵用该字符串表示的树(这是从头开始的决策树):{'index':1,'right':{'index':0,'right':'no','value':'overcast','left':'Yes'},'value':'轻微”,“左”:{“索引”:0,“右”:{'索引”:0,“右”:“是”,“值”:“阴”,“左”:“是”}, 'value':'rain','left':{'index':0,'right':'Yes','value':'rain','left':'Yes'}}}
并且我想代表它(使用Graphviz的边和节点)。要打印它,我在Python中使用此功能:
def print_tree(node, depth=0):
filename = outlook.csv'
dataset = load_csv(filename)
columns = dataset[0]
if isinstance(node, dict):
print('%s[%s = %s]' % ((depth * ' ', (columns[node['index']]), node['value'])))
print_tree(node['left'], depth+1)
print_tree(node['right'], depth+1)
else:
print('%s[%s]' % ((depth*' ', node)))
我想使用GraphViz中的Digraph从graphviz导入图
def createGraph(node):
dot = Digraph(comment="experiment")
def graph(node):
if isinstance(node, dict):
dot.node(str(id(node)))
dot.edge(str(id(node)) , str(id(node['right'])))
graph(node['left'])
graph(node['right'])
else:
dot.node(str(id(node)), str(node))
dot.render('test-output/roundround5.gv', view=True)
'test-output/round.gv.pdf'
graph(node)
但是显然代码是错误的。有人可以帮忙吗?
[您的代码块中有一些语法错误,文件名outlook.csv
的引用不正确,并且在图形块的末尾还有一个额外的字符串'test-output/round.gv.pdf'
。
尽管主要问题似乎是您为每次对Digraph
的调用都构建了一个新的graph()
对象,并且您以递归方式调用了graph。相反,您需要制作一个Digraph
,并将其传递给对graph
的第一次调用,然后递归地添加图形节点。
您能否扩大您的问题-解决语法错误,然后提供您看到的错误或不正确输出的示例?