Graphviz 与 PyGraphViz

Posted

技术标签:

【中文标题】Graphviz 与 PyGraphViz【英文标题】:Graphviz vs PyGraphViz 【发布时间】:2016-09-18 02:28:43 【问题描述】:

我有一些点文件(有向图)需要在 Python 中读取并从节点中提取一些值来填充我的数据结构。我看到有两个用于 Python 的 graphviz 包:graphviz 和 pygraphviz。两者有什么大的区别吗?从文档的快速滚动中,他们几乎似乎在做同样的事情。我将在 Python 2.7.X 中使用它来完成上述任务。

【问题讨论】:

也许也有用:qr.ae/pGtb7r 也许也有用:github.com/pygraphviz/pygraphviz/issues/346 和 python.libhunt.com/compare-pydot-vs-pygraphviz 和 github.com/pydot/pydot/issues/262 我不明白,为什么 pygraphviz 和 graphviz 都作为 python 包存在? pygraphviz 在做什么,而 graphviz 还没有做什么?为什么我会为 python 选择 pygraphviz vs graphviz? 【参考方案1】:

graphviz 是一个轻量级库,它调用 graphviz 作为子进程来执行所有操作并产生输出。这个库非常适合作为生成 SVG 或 PNG 输出的快速简便的方法。

pygraphviz 包含完整的 C 绑定,它使用 graphviz 作为库并公开所有 graphviz 的内部功能,如添加/删除节点/边。但它的部署复杂度更高,因为 pip 需要编译 C 绑定并查找所有库。

在您的情况下,由于您需要读取和操作点文件,因此您似乎必须使用 pygraphviz。其他有趣的替代方法是http://pypi.python.org/pypi/pydot,它是一个纯 Python 点解析器。

免责声明:我有偏见,因为我(一点点)为 pygraphviz 做出了贡献。

【讨论】:

您可能想为 Anaconda 用户添加注释:conda install graphviz 将安装 graphviz 命令行工具(包括 dot),不是 Python graphviz 库.如果您想要graphviz Python 库,则必须运行conda install python-graphviz,它还将安装graphviz 命令行工具(对于pygraphviz 库,只需运行conda install pygraphviz)。 pygraphviz vs pydot 怎么样? 我不明白,为什么 pygraphviz 和 graphviz 都作为 python 包存在? pygraphviz 在做什么,而 graphviz 还没有做什么?为什么我会为 python 选择 pygraphviz vs graphviz? @CharlieParker 我认为两者都通过不同的方法解决了本质上相同的问题。 graphviz 是用于“点文件”操作的纯 Python 库,并使用 graphviz 引擎进行渲染,pygraphviz 是 graphviz C 库之上的包装器,也使用 graphviz 来操作底层对象模型。距离最初的答案已经过去了 5 年,现在看来,包之间已经达到了相当的水平。我建议使用纯 python graphviz,因为不需要编译 c 绑定的部署要容易得多。

以上是关于Graphviz 与 PyGraphViz的主要内容,如果未能解决你的问题,请参考以下文章

安装graphviz,没有名为graphviz的模块

graphviz可以显示一个热门的解码分类数据吗?

graphviz dot:文本(标签)使用与箭头(边缘)相同的角度,而不是默认的水平

使用 Graphviz 绘制 NetworkX 图

Graphviz 中的隐藏边

了解 export_graphviz 的决策树输出