Графвиз: как вращать узел (или подграф)? - PullRequest
5 голосов
/ 23 декабря 2010

Я пытаюсь повернуть узел (или подграф, содержащий узел - в зависимости от того, что возможно / проще), как показано на следующем рисунке:

desired rotated node effect

( Обратите внимание, что для меня не имеет значения, поворачивается ли метка "B" - только то, что 'verti- *' тексты в записи [или, скорее, вся запись узел] вращаются, как показано )

Тем не менее, ближе всего я могу это следующий dot код:

digraph graphname {
    node [fontname=Monospace, fontsize=14]; 
    subgraph clusterMasterBox {
        node [shape=record];
        l1 [label = "{ horiz-1 \r| \
 horiz-2 \r| \
 horiz-3 \r| \
 horiz-4 \r} \
"];
        subgraph clusterSubRotateBox {
            rotate=90;
            node [shape=record,rotate=90];
            l2 [label = "{ verti-1 \r| \
 verti-2 \r| \
 verti-3 \r| \
 verti-4 \r} \
"];     
            label="B";
        }
    label="A"
    }
}

Единственная причина, по которой у меня есть subgraph clusterSubRotateBox (и единственная причина, по которой он вложен в clusterMasterBox), заключается в том, что я надеялся, что смогу назначить ему ротацию, но, очевидно, я не смогу - поскольку приведенный выше код создает это изображение:

gviz rotate actual

Так что мой вопрос - есть ли способ повернуть узел записи; если не сам по себе, то, может быть, как часть подграфа (или другого вида «объекта»)?

Заранее спасибо за любые предложения,
Ура!

Ответы [ 3 ]

4 голосов
/ 16 июля 2014

Если вы хотите повернуть один узел record , тогда будет работать rankdir .Я попробовал это для моего графика,

digraph plugnoid {
    rankdir=LR;
    node[shape=Mrecord];
    plugnoid [label="swarm| {<load0> onLoad|<plugin0> Plugin|<quit0> onQuit}|{<run0>run|<rehash0>rehash}"];}

enter image description here

Rankdir может иметь значения LR , RL и TB (по умолчанию).Когда я изменил rankdir на TB, изменился вывод:

enter image description here

Вы можете попробовать их на своем графике, чтобы получить желаемые результаты.Я почувствовал, что когда я использовал подграф и установил другое rankdir, результат был не таким хорошим.Пожалуйста, смотрите http://www.graphviz.org/doc/info/shapes.html#record для более подробной информации.

3 голосов
/ 15 апреля 2011

должен быть атрибут поворота на объекте графа (см. http://www.graphviz.org/doc/info/attrs.html#drotation), но он ничего не сделал в моем тесте. И он будет применяться только ко всему графику (не кластер / подграф)в соответствии с документами. Я думаю, что вы сначала отрендерите подграф в postscript, а затем включите его в окончательный график в качестве пользовательской фигуры для одного узла-заполнителя. Если вы не можете заставить «вращение» делать свое дело, конечно, postscriptУ меня есть простой способ применить преобразование (в данном случае вращение), вероятно, так же просто, как добавить префикс сгенерированного кода к определению координат. Извините за рукопожатие, но у меня нет времени, чтобы попробовать это сейчас.

2 голосов
/ 01 августа 2017

Для одного узла есть атрибут orientation. Я просто использовал

node[shape=hexagon, orientation=30]

Чтобы сделать шестиугольник с вершиной, а не плоской вершиной.

К сожалению, похоже, не работает с типами записей: - (

...