0

graphviz ライブラリを使用して、C でグラフを視覚化しようとしています。グラフは隣接行列によって与えられます。グラフが向いていて問題あり。マトリックスを操作して、n と m の間にエッジを作成し、続けますが、m と n の間にエッジもあり、別のエッジを作成します。その結果、graphviz は予想どおり 2 つのエッジを描画しますが、エッジの数が多いグラフは非常に読みにくくなります。両方向の矢印で単一のエッジを作成したいのですが、正しい方法がわかりません。(最初にグラフの説明を含むファイルを作成し(エッジ[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 に答える