простой "Т-образный" график в графвизе - PullRequest
1 голос
/ 15 ноября 2011

Нужно нарисовать график с точкой / graphviz, как на этом изображении: simple T shaped graph

Тексты могут быть над стрелками, как это делает graphviz.Но как добиться Т-макета?Нужно сделать кластер для верхнего ряда?

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Это одна возможность, используя rank=same для подграфа:

digraph g {
    node[shape=point, width=0.2];
    {
        rank=same;
        p1 -> n [label="text1"];
        n -> p2 [label="text2"];
    }
    n -> p3 [label="text3", dir=back];
    n[label="node", shape=rect, style=rounded];
}

Вы также можете использовать левую-правую раскладку вместо нисходящего.

Другая возможность состоит в том, чтобыотключить эффект некоторых ребер, используя constraint=false:

digraph g {
    node[shape=point, width=0.2];
    p1 -> n [label="text1", constraint=false];
    n -> p2 [label="text2", constraint=false];
    n -> p3 [label="text3", dir=back];
    n[label="node", shape=rect, style=rounded];
}

Результат тот же.

2 голосов
/ 15 ноября 2011

dot обычно размещает деревья слоями.Чтобы край не был разделением слоев, вы можете добавить опцию constraint=false.Итак, что-то вроде:

digraph {
  A [shape=point]
  B [shape=point]
  C [shape=point]
  N [label="node"]

  A -> N [label="text1", constraint=false]
  N -> B [label="text2", constraint=false]
  N -> C [label="text3", dir=back]
}

должно работать.

Обратите внимание, что край от нижнего узла к "узлу" должен быть обратным, поскольку dot размещает деревья сверху вниз.Поэтому логическое направление кромки должно быть сверху вниз, даже если направление отображения может быть наоборот (как здесь).

...