【问题标题】:Which graphviz library API is recommended for a C++ project that needs to generate some graphs?对于需要生成一些图形的 C++ 项目,推荐使用哪个 graphviz 库 API?
【发布时间】:2013-10-27 07:17:23
【问题描述】:

我知道作为库的 Graphviz 有多个版本。但是对于哪个被认为是当前+推荐的,我有点困惑。我想从一个 linux GUI 应用程序中生成并显示一些图表。

根据第 22 页的http://www.graphviz.org/doc/libgraph/Agraph.pdf,Libgraph 已被 Cgraph 取代。但是文件叫Agraph,我觉得很奇怪。

在第 23 页,它还说 Lgraph 是 Cgraph 的 C++ 继任者,由于我使用的是 C++,我很想了解更多信息,但我似乎无法在任何地方找到 Lgraph。

也许相关,我确实看到有一个名为 BGL 的 Boost 库,它支持导入和导出 graphviz 文件。寻找关于直接使用 BGL 而不是 Graphviz 还是 Lgraph 更可取的意见。

如果我 sudo apt-get install libgraphviz-dev 我得到 Cgraph,它看起来就像在 Ubuntu 上。在这种情况下,这个问题是要确认 Cgraph 是推荐的库,并询问 Lgraph 或 BGL 是否值得考虑。

【问题讨论】:

  • cgraph (graphviz.org/doc/libguide/libguide.pdf) 的 C api 看起来还不错,除了用 C 编写之外,它几乎是经典的面向对象的。
  • 模糊的问题。 “生成一些图表”——这是什么意思? Graphviz 对图表进行布局,以便清晰显示。 BGL 是一个用于处理图形以回答诸如什么是最短路径之类的问题的框架。但是你想生成图表......从什么开始?
  • @ravenspoint:例如,我有可以输出为 .gv 文件的内部数据。我可以手动创建一堆 .gv 文件,然后执行 system() 调用以要求 dot 将它们转换为图形。但我希望使用 Graphviz API 来完成这一切,而不是必须从外部调用 Graphviz。

标签: c++ ubuntu graphviz boost-graph


【解决方案1】:

BGL 不向 Graphviz 提供交互界面;如果需要,您将需要使用 Graphviz 的本地库之一,例如 cgraph。 BGL 可以读取和输出 Graphviz 格式的文件,但这似乎不是您想要的;它也有自己的一些布局算法,但没有 Graphviz 中的那么复杂。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2013-04-17
  • 2010-12-13
  • 2011-08-05
  • 2011-01-29
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多