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

69

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

3个回答

78

你可以使用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
我只能通过使用 neato -n sample.dot ...(而不是fdp)才能使其工作。 - Arvid
2
为什么要加感叹号?手册中没有找到相关内容。而且行为看起来不稳定(在2.36.0版本中)。 - kebs
2
所以,它不能与点布局引擎一起使用吗? - Wizard of Kneup
1
有没有办法只强制 x 或 y 位置? - Radio Controlled
3
运行dot并覆盖布局引擎对于不了解其工作原理的人来说非常令人困惑,而且没有任何好处。文档明确提到:"-K 指定要使用哪个默认布局算法,覆盖命令名称中的默认算法。例如,运行 dot -Kneato 等同于运行 neato。" - AnnanFay

5

0

我无法让-n标志与dot -Kfdp一起工作。

但是,我能够使用以下命令使其与neato一起工作:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接