【问题标题】:Graphviz grid alignmentGraphviz 网格对齐
【发布时间】:2011-10-30 04:09:47
【问题描述】:

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

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

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

编辑:

我选择 GraphViz 的原因是它可以执行布局,然后将该信息作为文本返回。其他工具好像只是想渲染一张图,但我想在别处渲染,只需要获取布局信息即可。

【问题讨论】:

    标签: layout graphviz dot graph-layout


    【解决方案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 并不足以满足我的需求。您的技巧适用于小图,但一旦它们变得更大,它就会停止工作。
    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 2014-08-02
    • 2020-05-12
    • 2018-12-29
    • 1970-01-01
    • 2015-07-22
    • 2021-08-22
    • 2021-11-30
    相关资源
    最近更新 更多