我有一个数字电路模拟器,需要绘制一个几乎与此问题完全相同的电路图(并回答)Block diagram layout with dot/graphviz
这是我第一次遇到DOT和graphviz。幸运的是,DOT语言规范是可用的,并且还有很多例子。
然而,我仍然不清楚一个细节,我总是要问一个新手:我有一个完整的数据来绘制图表。如何从中创建DOT文件?
逐行文字?
# SIMPLIFIED PSEUDOCODE
dotlines = ["digraph CIRCUIT {"]
for node in all_nodes:
dotlines.append(" {}[{}];".format(node.name, node.data))
for edge in all_edges:
dotlines.append(" {} -> {};".format(edge.from_name, edge.to_name))
dotlines.append['}']
dot = "\n".join(dotlines)
或者我应该以某种方式转换我的数据并使用一些以DOT格式导出它的模块?
答案 0 :(得分:8)
您可以考虑pygraphviz。
>>> import pygraphviz as pgv
>>> G=pgv.AGraph()
>>> G.add_node('a')
>>> G.add_edge('b','c')
>>> G
strict graph {
a;
b -- c;
}
我不同意@MatteoItalia的评论(也许这是一个品味问题)。您应该熟悉任务的可用包。您从简单的图表开始,并没有看到使用(非常简单)包的理由。在某些时候,您的图表的复杂性可能会增加,但您将继续将自己的解决方案推广到现有的东西。