Как установить положение головы и хвоста в узлах графвиз - PullRequest
0 голосов
/ 20 декабря 2018

Я не могу контролировать положение головы и хвоста ребра между 2 узлами.

Я настраиваю узел, как показано на графике ниже

questionGraph

digraph G{
  node [shape = "box"]
  a -> b
  b -> a
}

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Эта первая часть в основном является тем же ответом, который @marapet уже дал:

digraph G
{
   node[ shape = "box" ];
   a:w -> b:w;
   a:e -> b:e[ dir = back ];
}

Он создает график с закругленными краями:

enter image description here

Если все в порядке, то ответ marapet должен быть принят.

Если вы настаиваете на форме, которую вы указали в своем посте, необходимо применить более сложную процедуру:

digraph G
{
    // we create the two nodes to be displayed
    node[ shape = "box" ];
    a b;
    //we also create four empty nodes for routing the edges
    node[ shape = point, height = 0 ];
    x1 x2 x3 x4;
    // we make sure that the nodes are arranged on the right levels
    { rank = same; x1 a x2 }
    { rank = same; x3 b x4 }

    // we draw the edges one by one as the heads are varying
    x1 -> a[ dir = none ];
    a -> x2[ dir = back ];
    x1 -> x3[ dir = none ];
    x2 -> x4[ dir = none ];
    b -> x4[ dir = none ];
    x3 -> b;
}

Это дает вам

enter image description here

0 голосов
/ 20 декабря 2018

Положение головы и хвоста ребра можно определить с помощью точек компаса , как указано в Язык точек , или с помощью headport или tailport атрибуты:

digraph G{
  node [shape = "box"]
  a:w -> b:w
  b -> a [headport=e, tailport=e]
}
...