ASCII Визуализация графа узлов в Python - PullRequest
9 голосов
/ 23 марта 2011

У меня есть класс с именем Node

class Node:
   def __init__(self,name, childList, parentList):
      self.name = name
      # a list of all nodes which are children of this node
      # may have length 0 to many
      self.childList = childList 
      # a list of all nodes which are parents of this node
      # may have length 0 to many
      self.parentList = parentList

У меня есть список узлов (nodeList). Эти узлы могут быть в каждом другом parentLists или childLists. Я хочу иметь возможность визуализировать отношения между узлами, заданными в их дочерних и родительских списках, на стандартный вывод (как чертеж ASCII).

например, где имена ниже являются именами узлов в списке узлов.

                           Classifier
                                |
                                |
                         FeatureCombiner
                          /           \
                         /             \
                        /               \
               FeatureGenerator1     FeatureGenerator2
                      \                     /
                       \                   /
                        \                 /
                         \               /
                          \             /
                           \           /
                            \         /
                            Image Loader

Классификатор имеет пустой parentList и childList длины 1, содержащий FeatureCombiner. FeatureGenerator1 и 2 имеют одинаковые parent и childList, содержащие FeatureCombiner и Image Loader соответственно. В Image Loader есть пустой childList и parentList, содержащий FeatureGenerator1 и 2.

Спасибо заранее, Matt

Ответы [ 2 ]

8 голосов
/ 23 марта 2011

Это нетривиально делать в ascii, о чем свидетельствует отсутствие полных ответов в:

Графическое изображение Python ASCII

Тем не менее, существует множество инструментов, доступных для рисования графиков не ascii способами. Проверьте возможности печати, связанные с NetworkX и Matplotlib для начинающих:

http://networkx.lanl.gov/

http://matplotlib.sourceforge.net/

а также пидот:

http://code.google.com/p/pydot/

5 голосов
/ 23 марта 2011

Возможно перенести логику компоновки графа ASCII из Perl's Graph::Easy?

...