graphviz arrow, node, table - I'm looking for a solution to avoid a double arrow?

51 views Asked by At

I generate a code for graphviz. This network plan always contains 2 arrows for there and back directions. Unfortunately, 2 separate arrows are displayed in the example - but I don't want that...

network plan

Would anyone have an idea how to avoid the red double arrow? Are there perhaps other options that need to be considered?

digraph {

node [shape=box, style=filled, fillcolor=white, color=grey, margin=0];

graph [bgcolor=floralwhite];

edge[arrowhead="normal", color="darkblue", arrowsize=1];

rankdir=LR;
concentrate=true;


AAA [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.1</B></TD></TR>
        <TR><TD>AAA</TD></TR>
        <TR><TD>Switch1</TD></TR>
        <TR><TD PORT="111">1/1/1</TD></TR>
        <TR><TD PORT="121">1/2/1</TD></TR>
        <TR><TD PORT="161">1/6/1</TD></TR>
        </TABLE>
    >];


BBB [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.2</B></TD></TR>
        <TR><TD>BBB</TD></TR>
        <TR><TD>Switch2</TD></TR>
        <TR><TD PORT="141">1/4/1</TD></TR>
        <TR><TD PORT="151">1/5/1</TD></TR>
        </TABLE>
    >];

CCC [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.3</B></TD></TR> 
        <TR><TD>CCC</TD></TR> 
        <TR><TD>Switch3</TD></TR> 
        <TR><TD PORT="111">1/1/1</TD></TR>
        <TR><TD PORT="161">1/6/1</TD></TR>
        </TABLE>
    >];


DDD [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.4</B></TD></TR>
        <TR><TD>DDD</TD></TR>
        <TR><TD>Switch4</TD></TR>
        <TR><TD PORT="141">1/4/1</TD></TR>
        <TR><TD PORT="151">1/5/1</TD></TR>
        </TABLE>
    >];


EEE [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.5</B></TD></TR>
        <TR><TD>EEE</TD></TR>
        <TR><TD>Switch5</TD></TR>
        <TR><TD PORT="111">1/1/1</TD></TR>
        <TR><TD PORT="121">1/2/1</TD></TR>
        <TR><TD PORT="161">1/6/1</TD></TR>
        </TABLE>
    >];


BBB:141 -> CCC:161
BBB:151 -> AAA:121

AAA:111 -> EEE:161
AAA:121 -> BBB:151
AAA:161 -> DDD:141

CCC:111 -> DDD:151
CCC:161 -> BBB:141

DDD:141 -> AAA:161
DDD:151 -> CCC:111

EEE:161 -> AAA:111


}
2

There are 2 answers

5
sroush On

Remove one of the edges & add dir=both as an attribute of the other edge.

digraph {

node [shape=box, style=filled, fillcolor=white, color=grey, margin=0];

graph [bgcolor=floralwhite];

edge[arrowhead="normal", color="darkblue", arrowsize=1];

rankdir=LR;
concentrate=true;


AAA [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.1</B></TD></TR>
        <TR><TD>AAA</TD></TR>
        <TR><TD>Switch1</TD></TR>
        <TR><TD PORT="111">1/1/1</TD></TR>
        <TR><TD PORT="121">1/2/1</TD></TR>
        <TR><TD PORT="161">1/6/1</TD></TR>
        </TABLE>
    >];


BBB [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.2</B></TD></TR>
        <TR><TD>BBB</TD></TR>
        <TR><TD>Switch2</TD></TR>
        <TR><TD PORT="141">1/4/1</TD></TR>
        <TR><TD PORT="151">1/5/1</TD></TR>
        </TABLE>
    >];

CCC [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.3</B></TD></TR> 
        <TR><TD>CCC</TD></TR> 
        <TR><TD>Switch3</TD></TR> 
        <TR><TD PORT="111">1/1/1</TD></TR>
        <TR><TD PORT="161">1/6/1</TD></TR>
        </TABLE>
    >];


DDD [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.4</B></TD></TR>
        <TR><TD>DDD</TD></TR>
        <TR><TD>Switch4</TD></TR>
        <TR><TD PORT="141">1/4/1</TD></TR>
        <TR><TD PORT="151">1/5/1</TD></TR>
        </TABLE>
    >];


EEE [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2" color="black">
        <TR><TD><B>10.182.2.5</B></TD></TR>
        <TR><TD>EEE</TD></TR>
        <TR><TD>Switch5</TD></TR>
        <TR><TD PORT="111">1/1/1</TD></TR>
        <TR><TD PORT="121">1/2/1</TD></TR>
        <TR><TD PORT="161">1/6/1</TD></TR>
        </TABLE>
    >];


BBB:141 -> CCC:161
BBB:151 -> AAA:121

AAA:111 -> EEE:161
AAA:121 -> BBB:151
AAA:161 -> DDD:141  [dir=both]  // double-headed

CCC:111 -> DDD:151
CCC:161 -> BBB:141

//DDD:141 -> AAA:161  // do not draw
DDD:151 -> CCC:111

EEE:161 -> AAA:111
}

Giving:
enter image description here

0
Tim On

with „splines=false“, I can prevent the double arrows. how do I make sure the arrows don't cross the nodes? https://i.stack.imgur.com/Nd4HX.jpg