ASCII可视化python中的节点图

时间:2011-03-23 16:40:29

标签: python graph ascii visualization

我有一个名为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)。这些节点可以在彼此的父列表或子列表中。我希望能够将他们的childLists和父代列表中指定的节点之间的关系可视化到stdout上(作为ASCII绘图)。

例如,下面的名称是nodeList中节点的名称。

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

分类器有一个空的parentList和一个长度为1的childList,包含FeatureCombiner。 FeatureGenerator1和2分别具有相同的parent和childList,包含FeatureCombiner和Image Loader。 Image Loader有一个空的childList和一个包含FeatureGenerator1和2的parentList。

提前谢谢你, 马特

3 个答案:

答案 0 :(得分:7)

这在ascii中是非常重要的,因为缺乏完整的答案证明:

Python ASCII Graph Drawing

也就是说,有许多工具可用于以非ascii方式绘制图形。查看与初学者相关的NetworkX和Matplotlib绘图功能:

http://networkx.lanl.gov/

http://matplotlib.sourceforge.net/

还有pydot:

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

答案 1 :(得分:5)

也许从Perl的Graph::Easy

中移植ASCII图形布局逻辑

答案 2 :(得分:1)

我们在DVC project中遇到了类似的问题,潜伏甚至尝试将Graph::Easy移植到Python中之后,我们意识到没有跨平台的python库可以做到这一点,而没有需要像Graphviz这样的沉重依赖项。因此,我们最终使用了一个名为Grandalf的令人惊叹的库来为我们处理布局,然后我们将结果自己以ASCII呈现并使用分页器呈现(这就是git log这样的东西它的输出在水平和垂直方向都不错,并且可以滚动)。 See the whole code here

+-------------------+           +--------------------+
| test_data.csv.dvc |           | train_data.csv.dvc |
+-------------------+           +--------------------+
                  **              **                  
                    ***        ***                    
                       **    **                       
                +-------------------+                 
                | featurization.dvc |                 
                +-------------------+                 
                  ***            ***                  
                **                  ***               
              **                       **             
    +--------------+                     **           
    | training.dvc |                   **             
    +--------------+                ***               
                  ***            ***                  
                     **        **                     
                       **    **                       
                     +---------+                      
                     | Dvcfile |                      
                     +---------+