在GraphViz图(DOT)中交换两个节点的位置

时间:2017-04-12 18:17:25

标签: graphviz dot

我使用DOT语言在R中创建图表。当我得到一个奇怪的结果时,我感兴趣的是如何交换两个节点的位置:节点8和节点c4?

代码:

digraph DAG {
    # Initialization of node attributes
    node [shape = box, color = blue]; 2; 3; 4; 

    # Revision to node attributes
    { node [shape = box,style = filled,fillcolor = yellow];  8}

    # Revision to node attributes
    { node [shape = diamond, color = "red"];  c1; c2; c3; c4}

    { rank=same; c1; c2; c3}
    { rank=same; 8; c4}

    # Initialization of edge attributes
    edge [color = green, rel = yields]

    # Edge statements
    2->c1 [headport = w]; 
    c1->c2->c3 
    c2->c1 [tailport = n, headport = n];

    8->c3  [tailport = n, headport = s];
    c3->3  [tailport = e, headport = n]; 
    c3->c2 [tailport = n, headport = n];

    3->c4  [tailport = s, headport = n];
    c4->4  [tailport = s, headport = n];
    c4->8  [tailport = w, headport = e];
}

(错误的)结果是:

enter image description here

1 个答案:

答案 0 :(得分:1)

对于“错误的方式”边缘你可能

  • 交换节点并使用属性dir = back来反转其“强制”
  • 使用属性constraint = none禁用其“强制”

在您的情况下,您替换

8->c4  [tailport = e, headport = w, dir = back];

c4->8  [tailport = w, headport = e, constraint = none];

8->c4  [tailport = e, headport = w, dir = back];