对于需要生成一些图形的 C++ 项目,推荐使用哪个 Graphviz 库 API?

7
我知道有几个版本的Graphviz作为库存在。但是我有点困惑,不知道哪一个被认为是当前和推荐的版本。我想从Linux GUI应用程序中生成和显示一些图形。
根据http://www.graphviz.org/doc/libgraph/Agraph.pdf第22页的介绍,Libgraph已被Cgraph替代。但是这个文档被称为Agraph,我觉得很奇怪。
在第23页上,它还说Lgraph是Cgraph的C++继承者,由于我正在使用C ++,所以我想了解更多信息,但我似乎找不到Lgraph。
也许相关的是,我看到有一个名为BGL的Boost库,支持导入和导出graphviz文件。寻求意见,是否应该优先使用BGL而不是直接使用Graphviz或Lgraph。
看起来在Ubuntu上,如果我运行命令sudo apt-get install libgraphviz-dev,我会得到Cgraph。在这种情况下,这个问题要么是确认Cgraph是推荐的库,要么就是问是否值得考虑Lgraph或BGL。

1
cgraph的C API(http://www.graphviz.org/doc/libguide/libguide.pdf)看起来还不错,它基本上是经典的面向对象编程,只不过是用C语言编写的。 - Walter Nissen
含糊不清的问题。“生成一些图形” - 这是什么意思?Graphviz可以布局图形,以便能够清晰地显示。BGL是一个处理图形以回答诸如最短路径是什么之类问题的框架。但是您想要生成图形...从哪里生成? - ravenspoint
@ravenspoint:我有一些内部数据,可以将其输出为.gv文件。我可以手动创建一堆.gv文件,然后使用system()调用来请求dot将这些文件转换为图形。但是我希望能够使用Graphviz API完成所有操作,而不必外部调用Graphviz。 - Stéphane
1个回答

3

BGL不提供与Graphviz的交互界面;如果您需要这个功能,您需要使用Graphviz的本地库,例如cgraph。BGL可以读取和输出Graphviz格式的文件,但这似乎不是您要寻找的内容;它也有一些自己的布局算法,但它们不像Graphviz中那样复杂。


“但它们不如Graphviz中的那些复杂”这个条款对于Boost 1.59(http://www.boost.org/doc/libs/1_59_0/libs/graph/doc/topology.html)仍然有效吗? - AlwaysLearning

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接