Ortho edges and ports - a partial work-around

The ortho edge implementation does not handle ports (see Regarding graphviz's "orthogonal" edge routing - #2 by steveroush, [Dot] orthogonal edges in dot (#352) · Issues · graphviz / graphviz · GitLab, or spline = ortho produces unexpected output with ports (#1415) · Issues · graphviz / graphviz · GitLab)

Here is a link (Graphviz: fixOrtho - a work-around to allow ortho edges to connect to ports · GitHub) to a gvpr program that will often allow ortho edges to connect to ports.
It is easy, but not trivial to use:

  1. run dot -Gsplines=true myFile.gv > myFile.dot (Use any layout engine. This will position all the nodes and ports)
  2. run gvpr -cf fixOrtho.gvpr myFile.dot >myfileFixed.dot (This adds nodes and edges and alters existing edges)
  3. run neato -n -Tpng myFileFixed.dot >myfileFixed.png (Creates viewable image)

Note: the commands above can also be run as a single pipeline.

This is modestly tested software (surprisingly complex). Please try it and comment on the gist page. If/when it settles down, it can become part of the Graphviz package it that is desired, though I consider this a temporary “fix”.

Here are three versions of the ports.gv file that is included in the Graphviz source. (The red edge components are just to show the changes)

4 Likes