代码之家  ›  专栏  ›  技术社区  ›  Pietro Speroni

当使用graphviz绘制格时,如何在节点上强制Y位置?

  •  6
  • Pietro Speroni  · 技术社区  · 16 年前

    我用格拉维兹画了一个格子。
    节点是一组数字。

    作为一个格,我希望一个节点的高度位置(y)表示由该节点表示的集合中的元素数。然后用graphviz定义x的位置,使表示更清晰。

    有可能吗?

    根据DOT文档,应该有定义节点位置的属性pos。但是,尽管我用许多不同的方法尝试了很多次,但我还是无法得到定义节点位置的任何图形。这方面有人成功过吗?

    下面是我使用的经典点文件:

    digraph G {
    "528 544\n640 768" -> "768 528"; 
    "528 536\n530 539" -> "539"; 
    "528 536\n530 539" -> "528"; 
    "800 896 548\n944 566 728\n539 704 768" -> "704 768\n539 548"; 
    "800 896 548\n944 566 728\n539 704 768" -> "944 728\n539 566"; 
    "800 896 548\n944 566 728\n539 704 768" -> "944 800\n896 768"; 
    "768 539" -> "768"; 
    "768 539" -> "539"; 
    "768" -> "∅"; 
    "944" -> "∅"; 
    "944 528 536\n530 566 560\n728 656 539" -> "528 536\n530 539"; 
    "944 528 536\n530 566 560\n728 656 539" -> "944 728\n539 566"; 
    "944 528 536\n530 566 560\n728 656 539" -> "944 656\n528 560"; 
    "704 768\n539 548" -> "768 539"; 
    "944 728\n539 566" -> "944"; 
    "944 728\n539 566" -> "539"; 
    "800 896 640\n944 560 528\n544 656 768" -> "528 544\n640 768"; 
    "800 896 640\n944 560 528\n544 656 768" -> "944 656\n528 560"; 
    "800 896 640\n944 560 528\n544 656 768" -> "944 800\n896 768"; 
    "539" -> "∅"; 
    "944 656\n528 560" -> "944"; 
    "944 656\n528 560" -> "528"; 
    "896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 548\n944 566 728\n539 704 768"; 
    "896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "944 528 536\n530 566 560\n728 656 539"; 
    "896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 640\n944 560 528\n544 656 768"; 
    "896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "768 704 548\n528 530 544\n536 640 539"; 
    "768 528" -> "768"; 
    "768 528" -> "528"; 
    "528" -> "∅"; 
    "768 704 548\n528 530 544\n536 640 539" -> "528 544\n640 768"; 
    "768 704 548\n528 530 544\n536 640 539" -> "704 768\n539 548"; 
    "768 704 548\n528 530 544\n536 640 539" -> "768 528 530\n539 536"; 
    "944 800\n896 768" -> "768"; 
    "944 800\n896 768" -> "944"; 
    "768 528 530\n539 536" -> "528 536\n530 539"; 
    "768 528 530\n539 536" -> "768 539"; 
    "768 528 530\n539 536" -> "768 528"; 
    }
    

    如果有人能写一个定义了一个节点高度的文件的例子,我将非常感谢。

    1 回复  |  直到 15 年前
        1
  •  7
  •   Pietro Speroni    16 年前

    我找到了答案。

    在这里: http://www.linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html?page=2

    本质上,可以定义哪些节点集应该处于同一高度。 要使节点A和B的高度相同,我需要添加行: 等级=相同;A B_

    因此,这里有一个与以前类似的例子,但是节点设置正确:

    digraph G {
    {rank=same;  "768"  "944"  "539"  "528" };
    {rank=same;  "768 539"  "768 528" };
    {rank=same;  "768 640\n528 544"  "528 536\n530 539"  "768 704\n539 548"  "944 728\n539 566"  "944 656\n528 560"  "944 800\n896 768" };
    {rank=same;  "800 896 548\n944 566 728\n539 704 768"  "528 944 536\n530 566 560\n728 656 539"  "800 896 944\n656 560 528\n544 640 768"  "768 640 548\n528 530 544\n536 539 704" };
    "768 640\n528 544" -> "768 528"; 
    "528 536\n530 539" -> "539"; 
    "528 536\n530 539" -> "528"; 
    "800 896 548\n944 566 728\n539 704 768" -> "768 704\n539 548"; 
    "800 896 548\n944 566 728\n539 704 768" -> "944 728\n539 566"; 
    "800 896 548\n944 566 728\n539 704 768" -> "944 800\n896 768"; 
    "768 539" -> "768"; 
    "768 539" -> "539"; 
    "768" -> "∅"; 
    "944" -> "∅"; 
    "528 944 536\n530 566 560\n728 656 539" -> "528 536\n530 539"; 
    "528 944 536\n530 566 560\n728 656 539" -> "944 728\n539 566"; 
    "528 944 536\n530 566 560\n728 656 539" -> "944 656\n528 560"; 
    "768 704\n539 548" -> "768 539"; 
    "944 728\n539 566" -> "944"; 
    "944 728\n539 566" -> "539"; 
    "800 896 944\n656 560 528\n544 640 768" -> "768 640\n528 544"; 
    "800 896 944\n656 560 528\n544 640 768" -> "944 656\n528 560"; 
    "800 896 944\n656 560 528\n544 640 768" -> "944 800\n896 768"; 
    "539" -> "∅"; 
    "944 656\n528 560" -> "944"; 
    "944 656\n528 560" -> "528"; 
    "896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 548\n944 566 728\n539 704 768"; 
    "896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "528 944 536\n530 566 560\n728 656 539"; 
    "896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 944\n656 560 528\n544 640 768"; 
    "896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "768 640 548\n528 530 544\n536 539 704"; 
    "768 528" -> "768"; 
    "768 528" -> "528"; 
    "528" -> "∅"; 
    "768 640 548\n528 530 544\n536 539 704" -> "768 640\n528 544"; 
    "768 640 548\n528 530 544\n536 539 704" -> "768 704\n539 548"; 
    "768 640 548\n528 530 544\n536 539 704" -> "528 768 530\n539 536"; 
    "944 800\n896 768" -> "768"; 
    "944 800\n896 768" -> "944"; 
    "528 768 530\n539 536" -> "528 536\n530 539"; 
    "528 768 530\n539 536" -> "768 539"; 
    "528 768 530\n539 536" -> "768 528"; 
    }