如何在graphviz中强制节点位置(x和y)

时间:2011-03-17 19:00:36

标签: position graph-theory graphviz dot

我试图强制节点的位置。我有我的节点的x和y坐标及其有向图。我可以使用rank = same来处理行(y坐标),但无法弄清楚我如何处理列(x坐标)。

3 个答案:

答案 0 :(得分:56)

您可以使用 pos 属性(https://www.graphviz.org/doc/info/attrs.html#d:pos),例如:

xxx [
    label = xxx
    pos = "0,0!"
]

yyy [
    label = yyy
    pos = "10,10!"
]

您还必须指定neatofdp布局引擎,以便dot命令行(对于fdp):

dot -Kfdp -n -Tpng -o sample.png sample.dot

答案 1 :(得分:1)

这是我发现的一个示例: https://observablehq.com/@magjac/placing-graphviz-nodes-in-fixed-positions

基本上,可以为节点指定位置属性“ pos”。仅适用于neato或fdp布局引擎,不适用于点。

!表示该位置是输入内容,不应更改。

答案 2 :(得分:0)

我无法将dot -Kfdp标记与neato sample.dot -n -Tpng -o sample.png一起使用。

然而,我能够使用以下命令使用neato:

public static function getInstance($controller){ if(!isset(self::$_instance)){ self::$_instance = new $controller; } return self::$_instance; }