我计划使用 DOT 图形表示格式来保存/序列化具有一堆属性的图形 - 不是为了绘制它们。
我了解了 GraphViz 的输入格式中的 DOT,所以我去了该网站,看看 DOT 是如何解析的,以及我是否可以使用解析器或轻松移植它。我找到的是这个文档:Using GraphViz as a Library。以下是关于 DOT 的内容:
cgraph 库为 DOT 表示的图提供了解析器。 使用它,可以轻松读取图表并查询所需的内容 使用 agget 或 agxget 的属性。有关这些的更多信息 功能,请参阅第 2.1.1 节。
第 2.1.1 节中说:
绘制图表的第一步是创建它。 要使用 Graphviz 布局软件,必须使用
创建图形 图书馆。 我们可以通过两种主要方式之一创建图表,使用cgraph
或agread()
等等等等agopen()
...然后它描述了这些函数,这些函数采用 C 标准库
FILE*
或 char*
字符串。
我不太明白。看起来像
cgraph
只是 graphviz 存储库中的一个代码文件夹。
cgraph
是否作为独立库存在?cgraph
代码独立相关?请赐教。
点文件只是一个遵循描述图形结构的文本文件。从历史上看,它是由 AT&T 与 GraphViz 一起开发的,当时“ma-bell”负责电话网络并开发晶体管、激光器等发明。但点文件现在可以被许多图形/网络软件包读取。
cgraph 是 Graphviz 附带的库。您可以通过查找以 libcgraph 开头且通常位于名为 lib 的文件夹中的文件来找到它。它可以与 GraphViz 分开使用。它的代码位于您看到的文件夹中。
从技术上讲,点和cgraph是不同的东西。事实上,Graphviz 曾经使用过不同的库,并在过去的某个时间切换到了 cgraph 库。因此,您可以在 graphviz 网站上找到描述旧 graphviz 库的 pdf。
将 Graphviz 视为 IDE/包/可视化系统。 cgraph 是这个包中的一个工具。 Dot 是基于文本的系统的格式,用于存储和操作图形数据 - 特别适合可视化。
关于你的第三个问题,DOT本身只是一种语法允许描述图形的语言。 各种软件包应用程序提供 IDE(例如 GraphViz)等功能以及以各种格式和布局渲染和保存图形的能力。
如果 DOT 语言的语法允许您充分描述您的图形,那么这是一个很好的方法,因为应用程序和渲染器的整个生态系统都可用,如果您决定使用它们的话。 它很简洁——正是出于这个原因,我将它用于系统文档(> 400 个服务器和 > 1000 个节点)。