【问题标题】:how to optimize layout in graphviz to remove unecessary edges intersections (crossings)?如何优化graphviz中的布局以删除不必要的边缘交叉点(交叉点)?
【发布时间】:2011-02-01 21:14:49
【问题描述】:

我正在准备数据库关系的自动文档。该工具是graphviz。我遇到的问题是输出图像上节点的放置不是最佳的,并且有许多不必要的边缘交叉点。 有什么方法可以对图进行优化,使结果有最小的边相交(交叉)?

    digraph structs {
      node [shape=Mrecord];
      overlap="false";
      splines="true";
      layout=sfdp;
      rankdir=LR;

      ttype[label="::: ttype :::|<id>id|<table_name>table_name|<type_name>type_name|<synopsis>synopsis"];
      tevents[label="::: tevents :::|<id>id|<id_tcases>id_tcases|<id_ttype>id_ttype|<synopsis>synopsis|<expiredate>expiredate|<open>open"];
      toperationlog[label="::: toperationlog :::|<id>id|<executiondate>executiondate|<executiontime>executiontime|<query>query|<id_tusers>id_tusers"];
      tdocuments[label="::: tdocuments :::|<id>id|<id_tcases>id_tcases|<id_ttype>id_ttype|<path>path|<creationdate>creationdate"];
      tcustomers_cases[label="::: tcustomers_cases :::|<id_tcustomers>id_tcustomers|<id_tcases>id_tcases"];
      tcases[label="::: tcases :::|<id>id|<creationdate>creationdate|<incomingdate>incomingdate|<clousuredate>clousuredate|<synopsis>synopsis|<notes>notes|<id_ttype>id_ttype|<id_tusers>id_tusers"];
      tusers[label="::: tusers :::|<id>id|<username>username|<password>password|<firstname>firstname|<lastname>lastname|<role_id>role_id"];
      tcustomers[label="::: tcustomers :::|<id>id|<firstname>firstname|<lastname>lastname|<email>email|<phone>phone|<mobile>mobile|<address>address"];

      tevents:id_tcases -> tcases:id [arrowhead="none"];
      tevents:id_ttype -> ttype:id [arrowhead="none"];
      toperationlog:id_tusers -> tusers:id [arrowhead="none"];
      tdocuments:id_tcases -> tcases:id [arrowhead="none"];
      tdocuments:id_ttype -> ttype:id [arrowhead="none"];
      tcustomers_cases:id_tcustomers -> tcustomers:id [arrowhead="none"];
      tcustomers_cases:id_tcases -> tcases:id [arrowhead="none"];
      tcases:id_ttype -> ttype:id [arrowhead="none"];
      tcases:id_tusers -> tusers:id [arrowhead="none"];
    }

【问题讨论】:

    标签: graph graphviz intersection edges


    【解决方案1】:

    remincross 设置为 true 将导致交叉最小化再次运行,这应该会通过减少边交叉的数量来改善图形的外观。

    【讨论】:

    • 有算法吗?
    • 为了记录,这现在是 Graphviz 上的 default behavior
    猜你喜欢
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    相关资源
    最近更新 更多