【发布时间】:2011-03-17 19:00:35
【问题描述】:
我正在尝试强制节点的位置。我有节点的 x 和 y 坐标以及它的有向图。我可以使用 rank=same 来处理行(y 坐标),但不知道如何处理列(x 坐标)。
【问题讨论】:
标签: position graph-theory graphviz dot
我正在尝试强制节点的位置。我有节点的 x 和 y 坐标以及它的有向图。我可以使用 rank=same 来处理行(y 坐标),但不知道如何处理列(x 坐标)。
【问题讨论】:
标签: position graph-theory graphviz dot
您可以使用 pos 属性(https://www.graphviz.org/doc/info/attrs.html#d:pos),例如:
xxx [
label = xxx
pos = "0,0!"
]
yyy [
label = yyy
pos = "10,10!"
]
您还必须指定neato 或fdp 布局引擎,这样dot 命令行将是(对于fdp):
dot -Kfdp -n -Tpng -o sample.png sample.dot
【讨论】:
neato -n sample.dot ...(不是 fdp)来让它工作
dot 并覆盖布局引擎对于那些不知道它如何工作并且没有提供任何好处的人来说是相当混乱的?文档特别提到“-K 指定要使用的默认布局算法,覆盖命令名称中的默认值。例如,运行 dot -Kneato 相当于运行neato。”
这是我找到的一个例子: https://observablehq.com/@magjac/placing-graphviz-nodes-in-fixed-positions
基本上可以为节点指定位置属性“pos”。仅适用于neato 或 fdp 布局引擎,不适用于 dot。
! 表示该位置是一个输入,不应更改。
【讨论】:
我无法让-n 标志与dot -Kfdp 一起使用。
但是,我可以使用以下命令使其与neato 一起工作:
neato sample.dot -n -Tpng -o sample.png
【讨论】: