0

私は Mediawiki サイト内で GraphViz を使用しています。つまり、svg ファイルで作業できません (残念ながら)。このグラフを作成しました

digraph GPPubProcess{
rankdir="TB";
node [shape = box fontsize=10];
edge [fontsize=10];
graph[size="7.75,10.25" overlap = false];

subgraph c2 {
    rank="same";
    N02 [label="Two?" shape=hexagon margin=0];
    N03 [label="Three"];
}

subgraph c4 {
    rank="same";
    N07 [label="Seven"];
    N06 [label="Six?" shape=hexagon margin=0];
    N05 [label="Five"];
}

subgraph c8 {
    rank="same";
    N11 [label="Eleven)" shape=hexagon margin=0];
    N12 [label="Twelve"];
}

subgraph c9 {
    rank="same";
    N13 [label="Thirteen?" shape=hexagon margin=0]];
    N14 [label="Fourteen"];
N17 [label="COMPLETED"];
}

N00 [shape=point];
N01 [label="One"];
N02 [label="Two?" shape=hexagon margin=0];
N04 [label="Four?" shape=hexagon margin=0];
N08 [label="Eight"];
N09 [label="Nine"];
N10 [label="Ten?" shape=hexagon margin=0];
N99 [shape=point];
N00->N01:n;
N01:s->N02:n;
N02:s->N04:n [label="  yes"];
N04:s->N05:n [label="  no" weight=30];
N05:s->N08:n [weight=30];
N08:s->N09:n [weight=30];
N09:s->N10:n [weight=30];
N10:s->N11:n [label="  no" weight=30];
N11:s->N17:n [label="  no"];
N17:s->N99;

N02 -> N03 [weight=0];
N04:e -> N06:n [label="  yes"];
N06 -> N05 [label="  no"] [weight=0];
N06 -> N07 [label="  yes"];
N10:e -> N06:s [label="  yes" weight=5];
N03:s -> N07:n;
N07:e -> N09:e [weight=0];

N11:e -> N12:w;

N15 [label="Fifteen"];
N16 [label="Sixteen"];

N12:s->N13:n [weight=5];
N13:s->N15:n [label="  no"];
N15:s->N16:n;

N13:e->N14:w [label="  yes" weight=5];

N14:n->N07:s;

N16:w->N05:w [weight=0];

}

それは私が好きなものをほとんど生成しますが、16->5、10->6、13->4 のリンクは、ノード間で多くのスラロームを作成します。それらを正規化する方法はありますか?

また、6 と 5 の間のリンクは間違った方向に進んでいますが、正しくすることができませんでしたか? 何かトリックはありますか?

どうもありがとうございました。

ジョルジオ

4

1 に答える 1

0

weightまず、コンパス ポイントの命令 (:n、:e、:s、:w)を削除します。これらは、ドットにいくつかの奇妙な決定、特にコンパス ポイントを強制しています。デフォルト バージョンを変更する必要がある場合は、一度に 1 つの小さな変更を加えてください。残念ながら、特定のグラフを作成するためにドットを強制しようとすればするほど、奇妙な結果になる傾向があります。

SVG を扱うことはできないため、ある時点で、必要なグラフを正確に取得することをあきらめ、ドットが作成するグラフを受け入れる必要があります。ドットを強制できる量には制限があります。

6 と 5 の間のリンク ( N06 -> N05) には、6 から 5 に向かう矢印が必要です。矢印が 6 を指している場合、それは Graphviz の以前のバージョンのバグだと思います。最新のリリースに更新してみてください。

このコード:

digraph GPPubProcess{
    rankdir="TB";
    node [shape = box fontsize=10];
    edge [fontsize=10];
    graph[size="7.75,10.25" overlap = false];

    subgraph c2 {
        rank="same";
        N02 [label="Two?" shape=hexagon margin=0];
        N03 [label="Three"];
    }

    subgraph c4 {
        rank="same";
        N07 [label="Seven"];
        N06 [label="Six?" shape=hexagon margin=0];
        N05 [label="Five"];
    }

    subgraph c8 {
        rank="same";
        N11 [label="Eleven)" shape=hexagon margin=0];
        N12 [label="Twelve"];
    }

    subgraph c9 {
        rank="same";
        N13 [label="Thirteen?" shape=hexagon margin=0];
        N14 [label="Fourteen"];
        N17 [label="COMPLETED"];
    }

    N00 [shape=point];
    N01 [label="One"];
    N02 [label="Two?" shape=hexagon margin=0];
    N04 [label="Four?" shape=hexagon margin=0];
    N08 [label="Eight"];
    N09 [label="Nine"];
    N10 [label="Ten?" shape=hexagon margin=0];
    N99 [shape=point];
    N00->N01;
    N01->N02;
    N02->N04 [label="  yes"];
    N04->N05 [label="  no"];
    N05->N08;
    N08->N09;
    N09->N10;
    N10->N11 [label="  no"];
    N11->N17 [label="  no"];
    N17->N99;

    N02 -> N03;
    N04 -> N06 [label="  yes"];
    N06 -> N05 [label="  no"];
    N06 -> N07 [label="  yes"];
    N10 -> N06 [label="  yes"];
    N03 -> N07;
    N07 -> N09;

    N11 -> N12;

    N15 [label="Fifteen"];
    N16 [label="Sixteen"];

    N12->N13;
    N13->N15 [label="  no"];
    N15->N16;

    N13->N14  [label="  yes"];
    N14->N07;

    N16->N05;

}

このグラフを作成しました:

制約なし

に追加[constraint=false]するとN06 -> N05、N06 周辺の交差点をなくすことができますが、N11 と N17 が左側に押し出されます。

制約あり

于 2014-03-14T00:38:17.107 に答える