python - 如何在 Python 中创建 DOT 文件?

标签 python graphviz dot

我有一个数字电路模拟器,需要绘制一个几乎与这个问题(和答案)完全一样的电路图 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 格式导出数据的模块?

最佳答案

您可能会考虑 pygraphviz .

>>> import pygraphviz as pgv
>>> G=pgv.AGraph()
>>> G.add_node('a')
>>> G.add_edge('b','c')
>>> G
strict graph {
        a;
        b -- c;
}

我不同意@MatteoItalia 的评论(也许这是一个品味问题)。您应该熟悉可用于您的任务的包。您从简单的图形开始,看不到使用(非常简单的)包的理由。在某些时候,您的图表的复杂性可能会增加,但您将继续将自己的解决方案推向现成的解决方案。

关于python - 如何在 Python 中创建 DOT 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35078247/

相关文章:

Graphviz 绘制两个箭头而不是一个

C - 创建和写入文件时出现奇怪的字符

python - 如何匹配其中包含正则表达式语法的字符串?

python - Graphviz中如何设置输出图像的宽高

python - httplib - CSRF token

android - 如何在 gradle 中生成 Dagger (v1) 对象图 (*.dot)?

graphviz - 当graphviz中的rankdir = LR时,如何水平对齐节点

Graphviz Dot,混合定向和无向/传入传出叠加

python - 内嵌评论 ruamel.yaml

python - 我如何在 cssutils 中捕获 CSSStyleDeclaration 错误