c - GraphViz 边缘标签

标签 c graphviz data-visualization dot

我正在尝试使用 graphviz 绘制 C 头文件之间的依赖关系图。

基本上,我所做的是记录所有出现的#include 和条件(我的意思是#if 条件)。如果一个文件包含另一个文件,则它成为图中的父亲,潜在条件是边标签。

我得到了一个相当大的图表。问题源于总是水平的边缘标签(你不能改变它)并且似乎总是左对齐(我试过 labeloc 和 labeljust 但它没有改变任何东西。“居中”的正确方法是什么一条边的标签。

为了避免这个问题,我尝试将条件呈现为节点。如果 A.h 在 ANSI 条件下包含 B.h,则存在从 A.h 到 ANSI,然后从 ANSI 到 B.h 的链接......看起来不错,但问题是如果 C.h 在相同条件下包含 D.h,我会看到从 A.h 到 ANSI 的链接, 一个从 C.h 到 ANSI;一个从 ANSI 到 B.h ,一个从 ANSI 到 D.h 。问题是我不知道包含 B.h 的是 A.h 还是 C.h。有没有一种方法可以指定诸如通过节点之类的东西(从 A.h 到 B.h 的链接在 ANSI 下可能利用透明度。)

最佳答案

labelloc 和 labeljust 对于边是没有意义的。参见 here ,它分别将“GC”表示为图形、集群或将“N”表示为节点。

但是,您可以考虑为每个条件 生成带有标签的唯一节点。然后会有多个节点具有不同的“点 ID”,但具有相同的标签(条件的文本),因此很明显是 A.h 还是 C.h 包含 B.h。我想您会对结果感到满意,因为您已经说过它看起来不错。

祝你好运!

关于c - GraphViz 边缘标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830737/

相关文章:

有人可以解释这段代码中的这些行吗?

c - 处理在c文件而不是头文件中定义的变量

graphviz - DOT - 如何减少连接两个节点的线

graphviz - 将 GraphViz 集群连接到自身

qt - 渲染海量数据

c++ - 错误 C2061 : syntax error : identifier 'acosf' when using cURL

c - 将商和提醒划分并存储在不同的数组中

graphviz - 如何增加graphviz中边(样条)和节点之间的空间?

python - 没有名为 basemap 的模块

python - 如何从 matplotlib/seaborn 图中删除或隐藏 y 轴刻度标签