首页 > 解决方案 > 通过使用 python 解析文件来创建一组框及其连接

问题描述

我有一个文件:

    class building1 ;
.....
.....
.....
    endclass

    class building2 ;
.....
.....
.....
    endclass



    class building3 ;
.....
.....
.....
endlcass


    class INSTRASTRUCTURE ;
building1 A; building2 B;  building3 C;

endclass


    class C;

A a;
B b;

a.connection(b);

endclass

我想创建一个 的图形表示INFRASTRUCTURE,它具有建筑物 A,B,C (较小的盒子。现在在盒子 C 内, a 连接到 b ,所以代码应该读取它并创建一条线来显示 a 和 b 之间的连接.我怎样才能做到这一点?

标签: python

解决方案


使其尽可能简单,我使用带有 svg 的图形可视化,例如: import graphviz as gv

def to_svg_node_list(node_list, folder = 'img' , name = 'g2', fn = str):
g = gv.Digraph(format='svg')

for node in node_list:
    g.node(fn(node))  

for node in node_list:            
    for child in node.children:
        g.edge(fn(node), fn(child))

g.render(folder + '/' + name)

where : node_list = [a,b] # your structures,在类中定义您的 oen str方法或定义您自己的字符串表示形式。

每个结构都有 children 字段,就像你有 a.connection(b) 意味着

a.children = [b]

这将产生 svg 文件,如:

digraph {
    a-> b
... etc

什么可以在浏览器中打开。


推荐阅读