Layout Graphviz网格对齐

Layout Graphviz网格对齐,layout,graphviz,dot,graph-layout,Layout,Graphviz,Dot,Graph Layout,我试图为一个图形生成布局信息,其中所有元素都必须在网格中布局。我希望所有坐标都是网格框大小的整数倍 例如,如果我有一个由1英寸正方形组成的网格,我希望所有节点坐标都是72的倍数(如果我没有弄错的话,一英寸中的点数)。我喜欢dot的分层布局,所以如果可能的话,这就是我想要使用的工具 我已经看了好几遍了,但我还不知道怎么做 编辑: 我选择GraphViz的原因是它可以执行布局,然后以文本形式返回该信息。其他工具似乎只想渲染图形,但我想在其他地方渲染它,我只需要获得布局信息。我相信graph::Eas

我试图为一个图形生成布局信息,其中所有元素都必须在网格中布局。我希望所有坐标都是网格框大小的整数倍

例如,如果我有一个由1英寸正方形组成的网格,我希望所有节点坐标都是72的倍数(如果我没有弄错的话,一英寸中的点数)。我喜欢dot的分层布局,所以如果可能的话,这就是我想要使用的工具

我已经看了好几遍了,但我还不知道怎么做

编辑:


我选择GraphViz的原因是它可以执行布局,然后以文本形式返回该信息。其他工具似乎只想渲染图形,但我想在其他地方渲染它,我只需要获得布局信息。

我相信graph::Easy perl模块可以用于将点文件布局到网格中

编辑:

我不确定这是否是您想要的输出,但通过使用节点的列宽,我可以生成:

+------------------+
|        A         |
+------------------+
  |             |
  |             |
  v             v
+------------++----+
|     A1     || A2 |
+------------++----+
  |      |
  |      |
  v      v
+-----++-----+
| A1B || A1A |
+-----++-----+

graph { flow: down; }
[ A ] {columns: 8;}
[ A ]  -> { start: south; end: north; } [ A1 ] 
[ A ]  -> { start: south; end: north; } [ A2 ] 
[ A1 ] -> { start: south; end: north;}  [ A1A ]
[ A1 ] -> { start: south; end: north;}  [ A1B ]

此外,我相信可以在网格上设置节点所在的确切空间。

我查看了Graph::Easy,但它似乎无法完成我需要的分层布局。我正在布置一个DAG,我希望子节点严格低于它们的父节点。结果表明Graph::Easy的功能不足以满足我的需要。您的技巧对于小图形很有效,但一旦它们变大,它就停止工作。