python - 通过使用 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 之间的连接.我怎样才能做到这一点?
解决方案
使其尽可能简单,我使用带有 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
什么可以在浏览器中打开。
推荐阅读
- tensorflow - Darkflow 在演示上准确,但在代码上不准确
- algorithm - 通过 n 个中间节点找到从 a 到 b 的最小路径
- java - 如何在没有弹簧安全的情况下使用 api 密钥保护 rest api
- php - PHP使用pdo选择数据进入数组并使用数据
- scala - 这与 akka 演员类中的自我
- sql - 有没有办法默认触发器在特定用户上运行以进行 DML 操作?
- java - 本演示中的 JVM 内存分配和释放说明了吗?
- c# - EmguCV旧版本的haarcascade嘴微笑xml
- excel - VBA excel 打开带有外部链接的文档
- python - Scipy.optimize.linprog:值错误 - 输入无效