3

我正在使用 Graphviz(用neato 编译)创建一个图表。该图包含许多重叠节点,非常好。但是,有一组大节点我更喜欢始终位于其他小节点之上 - 尽管我更喜欢首先在图中定义大节点(这使得它们被绘制在最底部)。

有什么办法可以强迫这个吗?

编辑:
这是一个小例子,只是为了澄清我的意思:

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画在 node 上1

4

2 回答 2

3

我确实找到了一种(某种)解决方案...
我发现如果您将节点定义推迟到最后,即使您之前为该节点定义了边,它也会被绘制在最上面。
我意识到这与我之前定义的相矛盾,但这是在这种情况下唯一可能的解决方案,也是我最终不得不使用的解决方案。

在我的简短示例中,您可以这样做:

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

于 2009-11-25T07:40:00.747 回答
2

I don't think it's possible. The official neato guide talks about node layering on pages 6 through 9. It looks like the most you can do is adjust the length of edges and pin down nodes: you can't actually control how nodes layer over each other.

于 2009-11-25T04:09:14.383 回答