the ortho algorithm has a bunch of issues (see Work items · graphviz / graphviz · GitLab)
Here is a modestly improved version that uses Graphviz post-processor to customize edges · GitHub (see also A program to "fix" simple edges)
command line:
f=forum3328_3.gv; T=png;F=${f%.*};dot $f |gvpr -cf alterSimpleEdge.gvpr|neato -n2 -T$T -o$F.$T
digraph {
//splines = ortho;
node [shape=box]
edge [dir=none]
edge [edgeType=ortho2]
SMITH_BRIDGET [label="Bridget Smith", style=filled, fillcolor=bisque];
SMITH_ADAM [label="Adam Smith", style=filled, fillcolor=azure2];
SMITH_BERTRAND [label="Bertrand Smith", style=filled, fillcolor=azure2];
JOHNSON_BEATRICE [label="Beatrice Johnson", style=filled, fillcolor=bisque];
SMITH_CHARLES [label="Charles Smith", style=filled, fillcolor=azure2];
NEWTON_CHARLOTTE [label="Charlotte Newton", style=filled, fillcolor=bisque];
JOHNSON_BAINES [label="Baines Johnson", style=filled, fillcolor=azure2];
MAXWELL_MARGARET [label="Margaret Maxwell", style=filled, fillcolor=bisque];
JONES_MARY [label="Mary Jones", style=filled, fillcolor=bisque];
JONES_HENRY_JR [label="Henry Jones Junior", style=filled, fillcolor=azure2];
JONES_DIANA [label="Diana Jones", style=filled, fillcolor=bisque];
JONES_HENRY [label="Henry Jones", style=filled, fillcolor=azure2];
ADAMS_ABIGAIL [label="Abigail Adams", style=filled, fillcolor=bisque];
JONES_JEREMIAH [label="Jeremiah Jones", style=filled, fillcolor=azure2];
PLANK_PATRICIA [label="Patricia Plank", style=filled, fillcolor=bisque];
ADAMS_DOUGLAS [label="Douglas Adams", style=filled, fillcolor=azure2];
DENT_URSULA [label="Ursula Dent", style=filled, fillcolor=bisque];
SMITH_JOHN [label="John Smith", style=filled, fillcolor=azure2];
SMITH_JANE [label="Jane Smith", style=filled, fillcolor=bisque];
subgraph clusterF1 {
peripheries=0;
{
rank=same;
F1_top [shape=circle, label="", height=0.01, width=0.01];
SMITH_BERTRAND -> F1_top
F1_top -> JOHNSON_BEATRICE
}
}
{
rank=same;
F1_0 [shape=circle, label="", height=0.01, width=0.01];
F1_1 [shape=circle, label="", height=0.01, width=0.01];
F1_2 [shape=circle, label="", height=0.01, width=0.01];
F1_0 -> F1_1 -> F1_2;
}
F1_top -> F1_1 // gives diagonal [edgeType=straight] // added
F1_0 -> SMITH_BRIDGET [edgeType=straight] // added
F1_2 -> SMITH_ADAM;
subgraph clusterF2 {
peripheries=0;
{
rank=same;
F2_top [shape=circle, label="", height=0.01, width=0.01];
JONES_HENRY -> F2_top
F2_top -> ADAMS_ABIGAIL
}
}
{
rank=same;
F2_0 [shape=circle, label="", height=0.01, width=0.01];
F2_1 [shape=circle, label="", height=0.01, width=0.01];
F2_2 [shape=circle, label="", height=0.01, width=0.01];
F2_0 -> F2_1 -> F2_2;
}
F2_top -> F2_1;
F2_0 -> JONES_MARY [edgeDirection=ccw]
F2_1 -> JONES_HENRY_JR;
F2_2 -> JONES_DIANA;
subgraph clusterF3 {
peripheries=0;
{
rank=same;
F3_top [shape=circle, label="", height=0.01, width=0.01];
SMITH_ADAM -> F3_top
F3_top -> JONES_MARY
}
}
{
rank=same;
F3_0 [shape=circle, label="", height=0.01, width=0.01];
F3_1 [shape=circle, label="", height=0.01, width=0.01];
F3_2 [shape=circle, label="", height=0.01, width=0.01];
F3_0 -> F3_1 -> F3_2;
}
F3_top -> F3_1;
F3_0 -> SMITH_JOHN;
F3_2 -> SMITH_JANE;
subgraph clusterF4 {
peripheries=0;
{
rank=same;
F4_top [shape=circle, label="", height=0.01, width=0.01];
SMITH_CHARLES -> F4_top
F4_top -> NEWTON_CHARLOTTE
}
}
{
rank=same;
F4_0 [shape=circle, label="", height=0.01, width=0.01];
}
F4_top -> F4_0 [edgeDirection=ccw]
F4_0 -> SMITH_BERTRAND
subgraph clusterF5 {
peripheries=0;
{
rank=same;
F5_top [shape=circle, label="", height=0.01, width=0.01];
JOHNSON_BAINES -> F5_top
F5_top -> MAXWELL_MARGARET
}
}
{
rank=same;
F5_0 [shape=circle, label="", height=0.01, width=0.01];
}
F5_top -> F5_0;
F5_0 -> JOHNSON_BEATRICE;
subgraph clusterF6 {
peripheries=0;
{
rank=same;
F6_top [shape=circle, label="", height=0.01, width=0.01];
JONES_JEREMIAH -> F6_top
F6_top -> PLANK_PATRICIA
}
}
{
rank=same;
F6_0 [shape=circle, label="", height=0.01, width=0.01];
}
F6_top -> F6_0;
F6_0 -> JONES_HENRY;
subgraph clusterF7 {
peripheries=0;
{
rank=same;
F7_top [shape=circle, label="", height=0.01, width=0.01];
ADAMS_DOUGLAS -> F7_top
F7_top -> DENT_URSULA
}
}
{
rank=same;
F7_0 [shape=circle, label="", height=0.01, width=0.01];
}
F7_top -> F7_0;
F7_0 -> ADAMS_ABIGAIL [edgeDirection=ccw]
}
Giving:
I realize that this is really a bus (as in busbar) problem (see: Drawing busses for network and other diagrams (#1987) · Issues · graphviz / graphviz · GitLab).
I may have a better solution in the dusty corners of my computer. looking …
