我正在使用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
能够在节点1
上绘制。
答案 0 :(得分: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
答案 1 :(得分:2)
我不认为这是可能的。官方neato guide讨论了第6页到第9页的节点分层。看起来你能做的最多就是调整边长和引脚节点:你实际上无法控制节点如何相互叠加。 / p>