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