Dan*_*iel 11 html dot graphviz orthogonal edges
我正在使用graphviz,并希望使用splines = ortho.问题是边缘不尊重端口,因此无法分析图形.
digraph G{
splines= ortho;
A [shape = box, label =<
<TABLE BORDER="0" CELLBORDER="0" CELLSPACING="1"
CELLPADDING="2">
<TR> <TD COLSPAN = "3"> A </TD></TR>
<TR><TD PORT="1" BORDER = "1"> 1 </TD>
<TD ></TD>
<TD PORT="2" BORDER = "1"> 2 </TD>
</TR>
</TABLE>>];
B [shape = box, label =<
<TABLE BORDER="0" CELLBORDER="0" CELLSPACING="1"
CELLPADDING="2">
<TR> <TD COLSPAN = "3"> B </TD></TR>
<TR><TD PORT="1" BORDER = "1"> 1 </TD>
<TD ></TD>
<TD PORT="2" BORDER = "1"> 2 </TD>
</TR>
</TABLE>>];
C [shape = box, style = filled, label =<
<TABLE BORDER="0" CELLBORDER="0" CELLSPACING="1"
CELLPADDING="2">
<TR> <TD COLSPAN = "3"> C </TD></TR>
<TR><TD PORT="1" BORDER = "1"> 1 </TD>
<TD ></TD>
<TD PORT="2" BORDER = "1"> 2 </TD>
</TR>
<TR> <TD PORT = "3" BORDER = "1"> 3 </TD></TR>
</TABLE>>];
K [shape = box, label =<
<TABLE BORDER="0" CELLBORDER="0" CELLSPACING="1"
CELLPADDING="2">
<TR> <TD COLSPAN = "3"> K </TD></TR>
<TR><TD PORT="1" BORDER = "1"> 1 </TD>
<TD ></TD>
<TD PORT="2" BORDER = "1"> 2 </TD>
</TR>
</TABLE>>];
A:1 -> B:2;
A:2 -> B:2;
A:2 -> C:1;
B:1 -> C:1;
K:2 -> C:1;
B:2 -> K:1;
K:2 -> A:1;
B:1 -> C:3;
K:2 -> D;
K:2 -> E;
}
Run Code Online (Sandbox Code Playgroud)
结果:
我在官方graphviz网站上发现了这个问题,但自2011年以来似乎没有任何改进.有没有人知道如何规避这个问题?或者我有机会自己解决这个问题吗?
我认为你可以使用子图来实现你想要做的事情:
digraph G{
splines= ortho;
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white,shape=box,label="1"];
a1;
node [style=filled,color=white,shape=box,label="2"];
a2;
label = "A";
}
subgraph cluster_1 {
style=filled;
color=lightgrey;
node [style=filled,color=white,shape=box,label="1"];
b1;
node [style=filled,color=white,shape=box,label="2"];
b2;
label = "B";
}
subgraph cluster_2 {
style=filled;
color=lightgrey;
node [style=filled,color=white,shape=box,label="1"];
c1;
node [style=filled,color=white,shape=box,label="2"];
c2;
node [style=filled,color=white,shape=box,label="3"];
c3;
label = "C";
}
subgraph cluster_3 {
style=filled;
color=lightgrey;
node [style=filled,color=white,shape=box,label="1"];
k1;
node [style=filled,color=white,shape=box,label="2"];
k2;
label = "K";
}
D [style=filled,color=white,shape=box,color=lightgrey;]
E [style=filled,color=white,shape=box,color=lightgrey;]
a1 -> b2;
a2 -> b2;
a2 -> c1;
b1 -> c1;
k2 -> c1;
b2 -> k1;
k2 -> a1;
b1 -> c3;
k2 -> D;
k2 -> E;
}
Run Code Online (Sandbox Code Playgroud)
结果: