15

我正在尝试使用圆形拓扑绘制图形。

这是我期望看到的: 在此处输入图像描述

这是我的 gv 文件:

digraph g1 {
    layout="circo";
    node [shape = doublecircle]; N4 N6;
    node [shape = circle];
    N0 -> N1 [ label = "{1,0}"];
    N1 -> N2 [ label = "{1,0}"];
    N2 -> N3 [ label = "{1,0}"];
    N3 -> N4 [ label = "{1,0}"];
    N4 -> N5 [ label = "{1,0}"];
    N5 -> N6 [ label = "{1,0}"];
    N6 -> N0 [ label = "{1,0}"];

    N0 -> N4 [ label = "{1,0}"];
    N1 -> N5 [ label = "{1,0}"];
    N2 -> N6 [ label = "{1,0}"];
    N3 -> N0 [ label = "{1,0}"];
    N4 -> N1 [ label = "{1,0}"];
    N5 -> N2 [ label = "{1,0}"];
    N6 -> N3 [ label = "{1,0}"];    
}

这是上面图表的输出图像: 在此处输入图像描述

如何在 graphviz 中排列节点以使其看起来像1

4

1 回答 1

12

如果目标是拥有一个尊重节点顺序的图表,那并不是那么简单。您可以使用外部脚本计算节点的位置并使用neato 进行渲染

或者您可以首先使用仅确定节点正确顺序的边缘来布局节点:

digraph g1 {
    node [shape = doublecircle]; N4 N6;
    node [shape = circle];
    edge[label="{1,0}"];
    N0 -> N1 -> N2 -> N3 -> N4 -> N5 -> N6 -> N0;
}

和:

circo graph.gv > tempgraph.gv

然后将剩余的边缘添加到tempgraph.gv- 只需在关闭之前复制粘贴以下内容}

N0 -> N4 [ label = "{1,0}"];
N1 -> N5 [ label = "{1,0}"];
N2 -> N6 [ label = "{1,0}"];
N3 -> N0 [ label = "{1,0}"];
N4 -> N1 [ label = "{1,0}"];
N5 -> N2 [ label = "{1,0}"];
N6 -> N3 [ label = "{1,0}"];

neato并使用和-n选项渲染它:

neato -n tempgraph.gv -Tpng -O

您可能需要微调标签的位置:

圆形布局

于 2012-09-17T22:28:27.890 回答