2013-04-22 6 views
1

Я пытаюсь построить график вызовов python, как показано ниже, у меня есть изменение, которое имеет внутренние и внешние зависимости, и эти зависимости должны быть равны recursivley, пока каждый лист не получит закрытое изменение. .иЙ есть логика, чтобы получить внутреннюю и внешнюю зависимость, мне нужно несколько входов или тела, как построить график, как показано ниже ..Построение графика зависимостей в python

    change 
      / \ 
      / \ 
     /  \ 
internal dependency external dependency 
     /\      /\ 
     / \     /\ 
/ \    / \ 
/  \    / \ 

внутреннего DEP внешнего DEP внутреннего DEP внешнего DEP (не повторять это до тех пор, изменение зависимости находится в закрытом состоянии)

+0

Что это ваш лучший снимок до сих пор? –

+0

от «construct», вы имеете в виду распечатать график, который у вас уже есть или что такое ваш ввод? – Aprillion

+0

См. Http://stackoverflow.com/a/4160800/297323 –

ответ

2

Это будет проще, если вы поверните ожидаемый выход на свою сторону. Затем создать древовидную структуру, что вы хотите:

class Tree(object): 
    def __init__(self, name, *children): 
     self.name = name 
     self.children = children 

    def __str__(self): 
     return '\n'.join(self.tree_lines()) 

    def tree_lines(self): 
     yield self.name 
     last = self.children[-1] if self.children else None 
     for child in self.children: 
      prefix = '`-' if child is last else '+-' 
      for line in child.tree_lines(): 
      yield prefix + line 
      prefix = ' ' if child is last else '| ' 


tree = Tree('Change', 
    Tree('External', 
     Tree('External A'),Tree('External B'),Tree('External C',Tree('Sub Ext C'))), 
    Tree('Internal', 
     Tree('Internal A'),Tree('Internal B',Tree('Sub Int B')),Tree('Internal C')) 
    ) 

print tree 

распечаток:

Change 
+-External 
| +-External A 
| +-External B 
| `-External C 
| `-Sub Ext C 
`-Internal 
    +-Internal A 
    +-Internal B 
    | `-Sub Int B 
    `-Internal C 
Смежные вопросы