7

次のような単純な線形配置を生成したい:

graphviz で再作成したいグラフ

私はこの方法を難しくしすぎていると思います。位置をハード コーディングしてみましたが、スプライン エッジが必要なため、もう少し複雑です。

エッジが上か下かは特に気にしませんが、それを指定すると便利です。

4

1 に答える 1

8

これは、graphviz を使えば簡単にできるはずだと思われるものの 1 つですが、実際にはそうではありません。

Graphviz はエッジの交差を最小限に抑えるように作られているため、これらの写真のようにエッジを配置することはありません。これは、graphviz が作成された目的ではありません

しかし、エッジの最適化をオフにするオプションがあればいいと思います。

次のようなものを作成できます。

rankdir=LR;
ranksep=0;
edge[style=invis];
node[shape=none, width=0.3, height=0, margin=0.02];
4->7->5->1->8->3->6->2;

edge[style=solid, constraint=false];
1:s->2:s->3:s->4:s->5:s->6:s->7:s->8:s

その結果

グラフビズ出力

ノース ポートとサウス ポートの使用を開始するとすぐに、graphviz はエッジの交差を最小限に抑え、ノード間のエッジの一部をリードしようとします。

rankdir=LR;
ranksep=0.05;
edge[style=invis];
node[shape=none, width=0.3, height=0, fontsize=12, margin=0.02];
4->7->5->1->8->3->6->2;

edge[style=solid, weight=0];
1:n->2:n;
2:s->3:s->4:s;
4:n->5:n->6:n;
6:s->7:s;
7:n->8:n;

別のグラフビズ出力

誰かがより良い近似を持っている場合は、投稿してください。興味があります。

于 2011-04-07T20:45:59.790 に答える