Graphviz网格对齐

时间:2011-08-18 21:30:11

标签: layout graphviz dot graph-layout

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

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

我已多次查看element attribute list,但我还没弄清楚如何做到这一点。

修改

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

1 个答案:

答案 0 :(得分:1)

我相信Graph :: Easy perl模块可用于将点文件布局为网格。

http://bloodgate.com/perl/graph/manual/index.html

http://search.cpan.org/~tels/Graph-Easy/bin/graph-easy

修改

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

+------------------+
|        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 ]

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