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

时间:2012-04-04 18:43:10

标签: c graphviz graph-visualization

我试图借助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

感谢您的回答!

P.S。对不起我的英语不好。

1 个答案:

答案 0 :(得分:1)

您需要在边缘设置dir属性,我相信您可以在最里面的循环中执行此操作:

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