2016-10-26 8 views
0

Я сделал следующее графическое:Graphviz: Горизонтальное выравнивание не работает с задом наперед стрелка

enter image description here

Я хотел бы добавить дополнительную стрелку, указывая от «удаленного репо» все пути к «рабочей копии »(помечен как« git pull »), и я хотел бы, чтобы эта стрелка идеально сначала слегка опускалась, затем уходила, а затем вверх.

Когда я просто добавить стрелку на код, графический заканчивает тем, как это:

enter image description here

И это код:

digraph G { 
    /* set direction of graph to be left-->right */ 
    rankdir="LR"; 

    /* make boxes instead of ellipses */ 
    node [shape=box]; 

    /* should enforce nodes to be horizontally aligned */ 
    /* is not working, though... */ 
    rank=same; 

    /* assign labels to nodes */ 
    wc [label="working copy"]; 
    id [label="index"]; 
    lr [label="local repo"]; 
    rr [label="remote repo"]; 

    wc -> id [label="git add"]; 
    id -> lr [label="git commit"]; 
    lr -> rr [label="git push"]; 

    rr -> wc [label="git pull"]; 
} 

Вопрос: Почему горизонтальное выравнивание сломана и как это исправить?

Последующий вопрос: Как сделать стрелку направленной вниз, затем влево, затем вверх? (Или это единственный способ сделать это, используя как-то невидимые/поддельные узлы?)

ответ

1

Вы можете изменить проблемный край с атрибутом constraint=false. Затем вы получите ниже диаграмму.

enter image description here

Если вы предпочитаете гораздо более угловатые края Вы можете также splines=ortho для графа.

enter image description here

Пожалуйста, проверьте http://graphviz.it/#/mqNwRgzu с рабочим примером. Ниже я вставил исходный код.

digraph G { 
    /* set direction of graph to be left-->right */ 
    rankdir="LR"; 
    splines=ortho; 

    /* make boxes instead of ellipses */ 
    node [shape=box]; 

    /* should enforce nodes to be horizontally aligned */ 
    /* is not working, though... */ 
    rank=same; 

    /* assign labels to nodes */ 
    wc [label="working copy"]; 
    id [label="index"]; 
    lr [label="local repo"]; 
    rr [label="remote repo"]; 

    wc -> id [label="git add"]; 
    id -> lr [label="git commit"]; 
    lr -> rr [label="git push"]; 

    rr -> wc [label="git pull", constraint=false]; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^