从图形到.dot文件python

问题描述 投票:0回答:1

我有一棵用该字符串表示的树(这是从头开始的决策树):{'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)

但是显然代码是错误的。有人可以帮忙吗?

python decision-tree
1个回答
0
投票

[您的代码块中有一些语法错误,文件名outlook.csv的引用不正确,并且在图形块的末尾还有一个额外的字符串'test-output/round.gv.pdf'

尽管主要问题似乎是您为每次对Digraph的调用都构建了一个新的graph()对象,并且您以递归方式调用了graph。相反,您需要制作一个Digraph,并将其传递给对graph的第一次调用,然后递归地添加图形节点。

您能否扩大您的问题-解决语法错误,然后提供您看到的错误或不正确输出的示例?

© www.soinside.com 2019 - 2024. All rights reserved.