开发者

how to optimize layout in graphviz to remove unecessary edges intersections (crossings)?

开发者 https://www.devze.com 2023-02-07 19:39 出处:网络
I am preparing the automaitc documentation of DB relations. The tool is graphviz. Problem I have is that the placement of nodes on the output image is not opptimal and there are many unecessary inters

I am preparing the automaitc documentation of DB relations. The tool is graphviz. Problem I have is that the placement of nodes on the output image is not opptimal and there are many unecessary intersection of edges. Is there any method to perform optimazation of the graph so the result will have minumum edges intersetction (crossing)?

    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"];
    }


Setting remincross to true will cause cross minimization to run a second time, which should improve the look of the graph by reducing the number of edge crosses.

0

精彩评论

暂无评论...
验证码 换一张
取 消