Graphviz,从左到右有向图中的节点顺序(马尔可夫链)

时间:2016-07-10 14:47:14

标签: graph graphviz markov-chains

我想使用graphviz制作简单马尔可夫链的图表。下面是我使用的代码和我得到的图表。

如何让所有节点按照它们在.dot文件中的顺序位于水平轴上?显然,源文件中的节点顺序并不能解决问题。

很高兴)如何使2和3,3和4以及4和5之间的边缘在节点所在的水平轴上对称?您可以看到 p 边缘是直的,但 q 是弯曲的。我希望他们两个都弯曲。

digraph {
    rankdir=LR;
    node [shape = circle];

    1
    2
    3
    4
    5
    6

    1 -> 1[label="1"];

    2 -> 1[label="q"];
    2 -> 3[label="p"];

    3 -> 2[label="q"];
    3 -> 4[label="p"];

    4 -> 3[label="q"];
    4 -> 5[label="p"];

    5 -> 4[label="q"];
    5 -> 6[label="p"];

    6 -> 6[label="1"];
}

1 个答案:

答案 0 :(得分:1)

最重要的一步是确保所有节点都在同一级别:

digraph 
{
    rankdir=TB;
    node [ shape = circle ];
    { rank = same; 1 2 3 4 5 6 }

    2 -> 3[label="p"];
    3 -> 4[label="p"];
    4 -> 5[label="p"];
    5 -> 6[label="p"];
    6:ne -> 6:nw[label="1"];

    edge[ dir = back ];
    1:ne -> 1:nw[label="1"];
    1 -> 2[ label="q"];
    2 -> 3[label="q"];
    3 -> 4[label="q"];
    4 -> 5[label="q"];
}

产量

enter image description here