Как создать двустороннюю стрелку с помощью графвиза в C?

Я пытаюсь визуализировать график в C с помощью библиотеки graphviz. Граф задается матрицей смежности. Граф направлен и есть проблема. Я работаю с матрицей и создаю ребро между n и m, и так далее, но ребро между m и n тоже есть, и я создаю другое ребро. В результате графвиз рисует, как и положено, два ребра, но граф с большим количеством ребер читать очень сложно. Я хочу создать одно ребро со стрелкой, направленной в обе стороны, но не знаю, как это сделать правильно. (Есть дурацкая идея сначала создать файл с описанием графа (добавить в описание ребра [dir=оба]), а уже потом его обработать и нарисовать граф. Уверен есть решение получше , но я этого не знаю.)

Я работаю с матрицей следующим образом:

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. Извините меня за мой плохой английский.


person r3t    schedule 04.04.2012    source источник


Ответы (1)


Вам нужно установить атрибут dir на ребрах, что, как я полагаю, вы можете сделать так в своем самом внутреннем цикле:

Agedge_t *e = agedge(g, nodes[i], nodes[j]);
agsafeset(e, "dir", "both", "");
person Eric Melski    schedule 04.04.2012