【问题标题】:How to create a DOT file in Python?如何在 Python 中创建 DOT 文件?
【发布时间】:2016-01-29 06:30:47
【问题描述】:

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

【问题讨论】:

  • 文件格式似乎很简单,我认为没有理由引入库(尤其是因为任何库都可能要求您以自己的数据结构提供图表)。
  • 我建议你使用 gvgen。让它变得非常简单。

标签: python graphviz dot


【解决方案1】:

你可以考虑pygraphviz

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

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

【讨论】:

  • 我很后悔使用 pygraphviz,因为它有非常重的依赖关系。
  • 我深入研究了 Google 搜索结果,发现 gvgen 更容易跨平台安装。
猜你喜欢
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 2012-01-24
  • 2013-01-20
  • 1970-01-01
  • 2012-08-03
  • 2016-11-06
相关资源
最近更新 更多