【发布时间】:2017-12-23 19:18:34
【问题描述】:
我想使用 NetworkX 创建一个图形,使用 Graphviz 布局图形(通过 pygraphviz)。我已经成功运行了NetworkX pygraphviz examples documentation中的所有示例
我的问题是 - 如何将顶点的坐标(x,y)和尺寸(宽度,高度)返回到 NetworkX 图中。 这就是目标。我只想要 Graphviz 的布局功能,而不是绘图功能。使用这个堆栈(NetworkX、pygraphviz、graphviz)有可能吗?还有什么办法吗?
背景动机是这样的。 Graphviz 输出 png、ps、svg 等多种格式。 但我不想受到 Graphviz 处理的格式的限制。 我希望能够对布局结果进行后处理,甚至 如果我最终输出像 Graphviz 支持的流行格式。
更新:为了清楚起见,我已经重写了问题。关于 Graphviz 输出格式的建议没有抓住重点。这是我需要的布局数据
Update2:一个建议是以某种格式输出 Graphviz,然后我可以从中解析布局数据。该建议是针对 SVG 的。 我曾考虑过这种可能性。 Graphviz 输出 json(根据Graphviz output formats documentation page)。我无法让它在我的 Windows 安装上运行——由于某种原因,并非所有的输出格式都存在)。然而,正是这种方法让我感到不安。解析用于创建该输出的数据的格式化输出似乎是倒退的。我认为数据本身应该是可用的。
Update 3 - 有一个类似的问题 - How to get the coordinates from layout from graphviz?。答案之一建议使用 NetworkX。然而,答案使用 NetworkX 而不是 Graphviz 制作的布局。答案的作者不知道如何获取 Graphviz 布局数据。所以我的问题仍然相关,尚未得到回答
更新 4 - 现在是 07-2019,我仍然没有找到解决此问题的方法。我将一个答案标记为已接受 - 但需要注意的是 - 尽管在该答案中找到了很好的建议,但我仍然一无所知
【问题讨论】:
标签: python networkx graphviz pygraphviz graph-layout