Графически отобразить график или дерево, используя Python - PullRequest
0 голосов
/ 30 января 2020

Я ищу лучший способ графически отобразить следующее дерево, которое было создано с использованием вложенных словарей в Python 3.7.

menu = {'A':
            {'B':'Z',
             'C':{  'Z':'0',
                    'E':
                        {
                            'Z':'0',
                         'H':'X',
                        },
                    'F':{
                        'Z':'0',
                        'I':'X'
                    }
             },
             'D':
                {
                    'Z':'0',
                   'G':{
                       'Z':'0',
                        'J':'X'
                        }
                },
             }
        }

Я попытался использовать следующий код, описанный на странице Словарь объекта для дерева решений в Pydot , но он не работает.

import pydot

menu = {'A':
            {'B':'Z',
             'C':{  'Z':'0',
                    'E':
                        {
                            'Z':'0',
                         'H':'X',
                        },
                    'F':{
                        'Z':'0',
                        'I':'X'
                    }
             },
             'D':
                {
                    'Z':'0',
                   'G':{
                       'Z':'0',
                        'J':'X'
                        }
                },
             }
        }

def draw(parent_name, child_name):
    edge = pydot.Edge(parent_name, child_name)
    graph.add_edge(edge)

def visit(node, parent=None):
    for k,v in node.items():
        if isinstance(v, dict):
            # We start with the root node whose parent is None
            # we don't want to graph the None node
            if parent:
                draw(parent, k)
            visit(v, k)
        else:
            draw(parent, k)
            # drawing the label using a distinct name
            draw(k, k+'_'+v)

graph = pydot.Dot(graph_type='graph')
visit(menu)
print(graph)
graph.write_png('example1_graph.png')

Любая помощь будет принята с благодарностью. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...