Graphviz:防止边缘穿过集群
Graphviz: Prevent edges from crossing cluster
我正在尝试创建两列节点,它们之间有许多边。到目前为止我有这个,但边缘穿过 B 簇。所以我想我需要在集群之间有更多的 space,而不是在包含的节点之间添加更多的 space。我该如何处理?
我可以增加 nodesep
以在集群之间获得更多 space,但这对通过 B 集群路由的边缘没有影响。事实上,它们比原来的 nodesep
.
更靠 B 的右边。
graph {
direction=TB;
center=true;
ranksep=0.0;
nodesep=0.1;
fontname=Baskerville;
fontsize=12;
node [ fontsize=10; fixedsize=true; width=2.5; height=0.2; shape=plaintext; style=filled; ];
subgraph clusterA {
a1 -- a2 -- a3 -- a4 -- a5 -- a6 -- a7 -- a8 -- a9 -- a10 -- a11 -- a12 -- a13 -- a14 -- a15 -- a16 -- a17 -- a18 -- a19 -- a20 -- a21 -- a22 -- a23 -- a24 -- a25 -- a26 -- a27 -- a28 -- a29 -- a30 -- a31 -- a32 -- a33 -- a34 -- a35 -- a36 -- a37 -- a38 -- a39 -- a40 -- a41 -- a42 -- a43 -- a44 -- a45 -- a46 -- a47 -- a48 -- a49 -- a50 -- a51 -- a52 -- a53 -- a54 -- a55 -- a56 -- a57 -- a58 -- a59 -- a60 -- a61 -- a62 -- a63 -- a64 -- a65 -- a66 -- a67 -- a68 -- a69 -- a70 [ style=invis; ];
}
subgraph clusterB {
b1 -- b2 -- b3 -- b4 -- b5 -- b6 -- b7 -- b8 -- b9 -- b10 -- b11 -- b12 -- b13 -- b14 -- b15 -- b16 -- b17 -- b18 -- b19 -- b20 -- b21 -- b22 -- b23 -- b24 -- b25 -- b26 -- b27 -- b28 -- b29 -- b30 -- b31 -- b32 -- b33 -- b34 -- b35 -- b36 -- b37 -- b38 -- b39 -- b40 -- b41 -- b42 -- b43 -- b44 -- b45 -- b46 -- b47 -- b48 -- b49 -- b50 -- b51 -- b52 -- b53 -- b54 -- b55 -- b56 -- b57 -- b58 -- b59 -- b60 -- b61 -- b62 -- b63 -- b64 -- b65 -- b66 -- b67 -- b68 -- b69 -- b70 [ style=invis ];
}
{
a1 -- b23 [ constraint=false ];
a2 -- b37 [ constraint=false ];
a3 -- b46 [ constraint=false ];
a4 -- b42 [ constraint=false ];
a9 -- b68 [ constraint=false ];
a10 -- b47 [ constraint=false ];
/* more edges to be added */
}
}
想通了。如果我使用 splines=ortho
,边缘将保留在两个簇之间。他们看起来不太好,但没关系。
graph {
direction=TB;
center=true;
ranksep=0.0;
nodesep=0.3;
fontname=Baskerville;
fontsize=12;
splines=ortho;
node [ fontsize=10; fixedsize=true; width=2.5; height=0.2; shape=plaintext; style=filled; ];
subgraph clusterA {
color=white; /* hiding the cluster box so it doesn't interfere with the edges */
a1 -- a2 -- a3 -- a4 -- a5 -- a6 -- a7 -- a8 -- a9 -- a10 -- a11 -- a12 -- a13 -- a14 -- a15 -- a16 -- a17 -- a18 -- a19 -- a20 -- a21 -- a22 -- a23 -- a24 -- a25 -- a26 -- a27 -- a28 -- a29 -- a30 -- a31 -- a32 -- a33 -- a34 -- a35 -- a36 -- a37 -- a38 -- a39 -- a40 -- a41 -- a42 -- a43 -- a44 -- a45 -- a46 -- a47 -- a48 -- a49 -- a50 -- a51 -- a52 -- a53 -- a54 -- a55 -- a56 -- a57 -- a58 -- a59 -- a60 -- a61 -- a62 -- a63 -- a64 -- a65 -- a66 -- a67 -- a68 -- a69 -- a70 [ style=invis; ];
}
subgraph clusterB {
color=white;
b1 -- b2 -- b3 -- b4 -- b5 -- b6 -- b7 -- b8 -- b9 -- b10 -- b11 -- b12 -- b13 -- b14 -- b15 -- b16 -- b17 -- b18 -- b19 -- b20 -- b21 -- b22 -- b23 -- b24 -- b25 -- b26 -- b27 -- b28 -- b29 -- b30 -- b31 -- b32 -- b33 -- b34 -- b35 -- b36 -- b37 -- b38 -- b39 -- b40 -- b41 -- b42 -- b43 -- b44 -- b45 -- b46 -- b47 -- b48 -- b49 -- b50 -- b51 -- b52 -- b53 -- b54 -- b55 -- b56 -- b57 -- b58 -- b59 -- b60 -- b61 -- b62 -- b63 -- b64 -- b65 -- b66 -- b67 -- b68 -- b69 -- b70 [ style=invis ];
}
{
a1 -- b23 [ constraint=false ];
a2 -- b37 [ constraint=false ];
a3 -- b46 [ constraint=false ];
a4 -- b42 [ constraint=false ];
a9 -- b68 [ constraint=false ];
a10 -- b47 [ constraint=false ];
/* more edges to be added */
}
}
我正在尝试创建两列节点,它们之间有许多边。到目前为止我有这个,但边缘穿过 B 簇。所以我想我需要在集群之间有更多的 space,而不是在包含的节点之间添加更多的 space。我该如何处理?
我可以增加 nodesep
以在集群之间获得更多 space,但这对通过 B 集群路由的边缘没有影响。事实上,它们比原来的 nodesep
.
graph {
direction=TB;
center=true;
ranksep=0.0;
nodesep=0.1;
fontname=Baskerville;
fontsize=12;
node [ fontsize=10; fixedsize=true; width=2.5; height=0.2; shape=plaintext; style=filled; ];
subgraph clusterA {
a1 -- a2 -- a3 -- a4 -- a5 -- a6 -- a7 -- a8 -- a9 -- a10 -- a11 -- a12 -- a13 -- a14 -- a15 -- a16 -- a17 -- a18 -- a19 -- a20 -- a21 -- a22 -- a23 -- a24 -- a25 -- a26 -- a27 -- a28 -- a29 -- a30 -- a31 -- a32 -- a33 -- a34 -- a35 -- a36 -- a37 -- a38 -- a39 -- a40 -- a41 -- a42 -- a43 -- a44 -- a45 -- a46 -- a47 -- a48 -- a49 -- a50 -- a51 -- a52 -- a53 -- a54 -- a55 -- a56 -- a57 -- a58 -- a59 -- a60 -- a61 -- a62 -- a63 -- a64 -- a65 -- a66 -- a67 -- a68 -- a69 -- a70 [ style=invis; ];
}
subgraph clusterB {
b1 -- b2 -- b3 -- b4 -- b5 -- b6 -- b7 -- b8 -- b9 -- b10 -- b11 -- b12 -- b13 -- b14 -- b15 -- b16 -- b17 -- b18 -- b19 -- b20 -- b21 -- b22 -- b23 -- b24 -- b25 -- b26 -- b27 -- b28 -- b29 -- b30 -- b31 -- b32 -- b33 -- b34 -- b35 -- b36 -- b37 -- b38 -- b39 -- b40 -- b41 -- b42 -- b43 -- b44 -- b45 -- b46 -- b47 -- b48 -- b49 -- b50 -- b51 -- b52 -- b53 -- b54 -- b55 -- b56 -- b57 -- b58 -- b59 -- b60 -- b61 -- b62 -- b63 -- b64 -- b65 -- b66 -- b67 -- b68 -- b69 -- b70 [ style=invis ];
}
{
a1 -- b23 [ constraint=false ];
a2 -- b37 [ constraint=false ];
a3 -- b46 [ constraint=false ];
a4 -- b42 [ constraint=false ];
a9 -- b68 [ constraint=false ];
a10 -- b47 [ constraint=false ];
/* more edges to be added */
}
}
想通了。如果我使用 splines=ortho
,边缘将保留在两个簇之间。他们看起来不太好,但没关系。
graph {
direction=TB;
center=true;
ranksep=0.0;
nodesep=0.3;
fontname=Baskerville;
fontsize=12;
splines=ortho;
node [ fontsize=10; fixedsize=true; width=2.5; height=0.2; shape=plaintext; style=filled; ];
subgraph clusterA {
color=white; /* hiding the cluster box so it doesn't interfere with the edges */
a1 -- a2 -- a3 -- a4 -- a5 -- a6 -- a7 -- a8 -- a9 -- a10 -- a11 -- a12 -- a13 -- a14 -- a15 -- a16 -- a17 -- a18 -- a19 -- a20 -- a21 -- a22 -- a23 -- a24 -- a25 -- a26 -- a27 -- a28 -- a29 -- a30 -- a31 -- a32 -- a33 -- a34 -- a35 -- a36 -- a37 -- a38 -- a39 -- a40 -- a41 -- a42 -- a43 -- a44 -- a45 -- a46 -- a47 -- a48 -- a49 -- a50 -- a51 -- a52 -- a53 -- a54 -- a55 -- a56 -- a57 -- a58 -- a59 -- a60 -- a61 -- a62 -- a63 -- a64 -- a65 -- a66 -- a67 -- a68 -- a69 -- a70 [ style=invis; ];
}
subgraph clusterB {
color=white;
b1 -- b2 -- b3 -- b4 -- b5 -- b6 -- b7 -- b8 -- b9 -- b10 -- b11 -- b12 -- b13 -- b14 -- b15 -- b16 -- b17 -- b18 -- b19 -- b20 -- b21 -- b22 -- b23 -- b24 -- b25 -- b26 -- b27 -- b28 -- b29 -- b30 -- b31 -- b32 -- b33 -- b34 -- b35 -- b36 -- b37 -- b38 -- b39 -- b40 -- b41 -- b42 -- b43 -- b44 -- b45 -- b46 -- b47 -- b48 -- b49 -- b50 -- b51 -- b52 -- b53 -- b54 -- b55 -- b56 -- b57 -- b58 -- b59 -- b60 -- b61 -- b62 -- b63 -- b64 -- b65 -- b66 -- b67 -- b68 -- b69 -- b70 [ style=invis ];
}
{
a1 -- b23 [ constraint=false ];
a2 -- b37 [ constraint=false ];
a3 -- b46 [ constraint=false ];
a4 -- b42 [ constraint=false ];
a9 -- b68 [ constraint=false ];
a10 -- b47 [ constraint=false ];
/* more edges to be added */
}
}