0

我正在尝试借助 graphviz 库在 C 中可视化图形。图由邻接矩阵给出。图是有向的,有问题。我使用矩阵并在 n 和 m 之间创建一条边,然后继续,但 m 和 n 之间的边也在那里,我创建了另一条边。结果,graphviz 像预期的那样绘制了两条边,但是具有大量边的图很难阅读。我想创建一个带有双向箭头的单边,但不知道如何正确操作。(有一个愚蠢的想法是先创建一个带有图形描述的文件(添加到边缘的描述[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

谢谢您的回答!

PS对不起我的英语不好。

4

1 回答 1

1

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

Agedge_t *e = agedge(g, nodes[i], nodes[j]);
agsafeset(e, "dir", "both", "");
于 2012-04-04T19:45:17.437 回答