Расслоение узла в Графвизе - PullRequest
3 голосов
/ 19 ноября 2009

Я создаю график с использованием Graphviz (скомпилировано с Neato). Этот граф содержит много перекрывающихся узлов, что прекрасно. Тем не менее, есть группа больших узлов, которые я предпочитаю всегда размещать поверх других маленьких узлов, хотя я предпочитаю сначала определять большие узлы на графике (что делает их нарисованными в самом низу).

В любом случае, я могу это заставить?

Edit:
Вот небольшой пример, чтобы уточнить, что я имею в виду:

graph G {
    node [style=filled,fillcolor=black];
    BigNode [fillcolor=skyblue,shape=Msquare];

    node [style=filled,fillcolor=red,shape=circle];
    edge [style=invis]
    1 -- BigNode[len=0.5];
    2 -- BigNode[len=1];
}

Я бы хотел, чтобы BigNode был закрашен над узлом 1.

Ответы [ 2 ]

3 голосов
/ 25 ноября 2009

Я нашел одно (вроде) решение ...
Я обнаружил, что если вы отложите только определение узла до конца, даже если вы определили ребра для этого узла ранее, оно будет нарисовано самым верхним. Я понимаю, что это противоречит тому, что я определил ранее, но это было единственно возможное решение в этом случае, и это было то, что мне в конечном итоге пришлось использовать.

В моем коротком примере вы бы сделали это:

graph G {
    node[style=filled,fillcolor=black];
    // Definition of BigNode moved to the end of the file
    /*BigNode [fillcolor=skyblue,shape=Msquare];*/ 

    node[style=filled,fillcolor=red,shape=circle];
    edge[style=invis]
    1 -- BigNode[len=0.5];
    2 -- BigNode[len=1];

    // Defined after already defining edges for BigNode
    BigNode [fillcolor=skyblue,shape=Msquare];
}

На полученном графике BigNode закрашен над узлом 1

2 голосов
/ 25 ноября 2009

Я не думаю, что это возможно. Официальное руководство neato рассказывает о расслоении узлов на страницах с 6 по 9. Похоже, самое большее, что вы можете сделать, это настроить длину ребер и закрепить узлы: вы не можете фактически контролировать, как узлы накладываются на каждый другой.

...