c - 如何在 C 中使用 graphviz 创建双向箭头?

标签 c graphviz graph-visualization

我正在尝试在 graphviz 库的帮助下用 C 语言可视化图形。图由邻接矩阵给出。图是有向的,有问题。我使用矩阵并在 n 和 m 之间创建一条边,然后继续,但 m 和 n 之间的边也在那里,我创建了另一条边。结果,graphviz 正如预期的那样绘制了两条边,但是具有大量边的图非常难以阅读。我想创建一 strip 有双向箭头的单边,但不知道如何正确执行。 (有一个愚蠢的想法,首先创建一个包含图形描述的文件(添加到边缘的描述[dir = Both]),然后稍后处理它并绘制图形。我确信有更好的解决方案,但我不知道。)

我正在使用这样的矩阵:

for(i=0; i<n; i++)
            nodes[i] =  agnode(g, itoa(i+1, name)); // Agnode_t *nodes[100];
    for(i=0; i<n; i++)
            for(j=0; j<n; j++)
                    if(matrix[i][j])
                            agedge(g, nodes[i], nodes[j]); // add edges

感谢您的回答!

附注请原谅我的英语不好。

最佳答案

您需要在边缘设置 dir 属性,我相信您可以在最里面的循环中这样做:

Agedge_t *e = agedge(g, nodes[i], nodes[j]);
agsafeset(e, "dir", "both", "");

关于c - 如何在 C 中使用 graphviz 创建双向箭头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10017349/

相关文章:

c - 帮助我理解这个函数标题。代码来自 FreeBSD 8 源代码 UFS 部分

python - 有没有什么方法可以可视化具有从一个热编码特征整合的分类特征的决策树(sklearn)?

binary-tree - GraphViz二叉树左右子级

python - python中图形的交互式可视化

javascript - d3.js 根据过滤器更改节点及其传出和传入链接的不透明度

c - 如何使用 fread 将 char 保存到二维数组?

c - 如何在 C 中打印出现的字母和单词(鼓励使用指针)

图协作工具和邻接表生成

c - 如果 x 的类型为 char * 而不是 char[N],printf ("%s\n", x) 如何工作?

doxygen - sh : dot: command not found + doxygen + Lion