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->14 在节点之间产生了很多障碍。有没有办法使它们正规化?

此外,六和五之间的链接方向错误,但我无法正确?有什么诀窍吗?

非常感谢。

乔治奥

4

1 回答 1

0

我将首先删除weight和罗盘点指令(:n,:e,:s,:w)。这些迫使 dot 做出一些奇怪的决定,尤其是指南针点。如果您需要对默认版本进行更改,请一次进行一项小的更改。不幸的是,你越是试图强迫 dot 制作一个特定的图表,它就会变得越奇怪。

由于您无法使用 SVG,因此在某些时候您必须放弃获得您想要的图形并接受 dot 创建的图形。您可以强制 dot 的数量是有限度的。

六和五之间的链接 ( N06 -> N05) 应该有从六到五的箭头。如果您看到箭头指向 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]toN06 -> N05有助于消除 N06 周围的交叉点,但随后会将 N11 和 N17 推向左侧:

有约束

于 2014-03-14T00:38:17.107 回答