Graphviz 网格对齐
Posted
技术标签:
【中文标题】Graphviz 网格对齐【英文标题】:Graphviz grid alignment 【发布时间】:2011-10-30 04:09:47 【问题描述】:我正在尝试为所有元素都必须以网格布局的图形生成布局信息。我希望所有坐标都是网格框大小的整数倍。
例如,如果我有一个由 1 英寸正方形组成的网格,我希望所有节点坐标都是 72 的倍数(如果我没记错的话,一英寸的点数)。我喜欢 dot 的层次结构,所以如果可能的话,这就是我想使用的工具。
我已经多次查看element attribute list,但我还没弄清楚如何做到这一点。
编辑:
我选择 GraphViz 的原因是它可以执行布局,然后将该信息作为文本返回。其他工具好像只是想渲染一张图,但我想在别处渲染,只需要获取布局信息即可。
【问题讨论】:
【参考方案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 ]
我也相信可以在网格上设置节点所在的确切空间。
【讨论】:
我查看了 Graph::Easy,但它似乎无法进行我需要的分层布局。我正在布置一个 DAG,我希望子节点严格低于其父节点。 事实证明 Graph::Easy 并不足以满足我的需求。您的技巧适用于小图,但一旦它们变得更大,它就会停止工作。以上是关于Graphviz 网格对齐的主要内容,如果未能解决你的问题,请参考以下文章
graphviz dot:文本(标签)使用与箭头(边缘)相同的角度,而不是默认的水平
Anaconda安装Graphviz, mac下Graphviz安装, pcharm中调用pycharm, Graphviz典型例子