在 graphviz 中的节点之间绘制省略号
Drawing ellipsis between nodes in graphviz
我有兴趣在 graphviz 中的节点之间绘制垂直省略号,如下所示:
我遇到的问题是,每当我尝试这样做时,我似乎无法让 x3
和 xn
垂直排列,如下所示:
这是我尝试过的:
digraph G {
rankdir=LR
splines=line
subgraph cluster_0 {
color=white;
node [style=solid, color=black, shape=circle];
x1 x2 x3 xn [group=g1];
label = "Input Features";
}
subgraph cluster_1 {
color=white;
node [style=solid, color=red2, shape=circle];
a1 [group=g2];
label = "Activation";
}
subgraph cluster_2 {
color=white;
node [style=solid, color=green, shape=circle];
out [group=g3];
label = "Output";
}
x1 -> a1;
x2 -> a1;
x3 -> a1;
a1 -> out;
x3 -> xn [arrowhead="none", color="black:invis:black"];
}
我是 graphviz 的新手,所以我什至不确定我是否在这里正确使用了子图。我还尝试将子图中的节点添加到组中,但这似乎没有任何作用。
添加
{ rank = same; x1 x2 x3 xn }
x1 -> x2 -> x3[ style = invis ];
到你的第一个子图。这具有
的效果
- 四个节点都是一层,即垂直排列
- 三个编号的节点在一起
这是我的版本:
digraph G
{
rankdir = LR
splines = line
subgraph cluster_0
{
color = white;
node[ style = solid, color = black, shape = circle];
{ rank = same; x1 x2 x3 xn }
x1 -> x2 -> x3[ style = invis ];
label = "Input Features";
}
subgraph cluster_1
{
color = white;
node[ style = solid, color = red2, shape = circle ];
a1;
label = "Activation";
}
subgraph cluster_2
{
color =white;
node[ style = solid, color = green, shape = circle ];
out;
label = "Output";
}
x1 -> a1;
x2 -> a1;
x3 -> a1;
a1 -> out;
x3 -> xn[ arrowhead = "none", color = "black:invis:black" ];
}
这给了你
E D I T 回答您评论中的问题;关键是在同一等级内颠倒了节点定义和边方向的顺序,这可能是由 rankdir = LR
布局引起的。毕竟,有一个简单的解决方案!
digraph G
{
rankdir = LR
splines = line
subgraph cluster_0
{
color = white;
label = "Input Features";
node[ style = solid, color = black, shape = circle ];
/* define and connect in reverse order */
{ rank = same; xn x3 x2 x1 }
x3 -> x2 -> x1[ style = invis ];
xn -> x3[ arrowhead = "none", color = "black:invis:black" ];
}
subgraph cluster_1
{
color = white;
node[ style = solid, color = red2, shape = circle ];
a1;
label = "Activation";
}
subgraph cluster_2
{
color =white;
node[ style = solid, color = green, shape = circle ];
out;
label = "Output";
}
{ x1 x2 x3 } -> a1;
a1 -> out;
}
我有兴趣在 graphviz 中的节点之间绘制垂直省略号,如下所示:
我遇到的问题是,每当我尝试这样做时,我似乎无法让 x3
和 xn
垂直排列,如下所示:
这是我尝试过的:
digraph G {
rankdir=LR
splines=line
subgraph cluster_0 {
color=white;
node [style=solid, color=black, shape=circle];
x1 x2 x3 xn [group=g1];
label = "Input Features";
}
subgraph cluster_1 {
color=white;
node [style=solid, color=red2, shape=circle];
a1 [group=g2];
label = "Activation";
}
subgraph cluster_2 {
color=white;
node [style=solid, color=green, shape=circle];
out [group=g3];
label = "Output";
}
x1 -> a1;
x2 -> a1;
x3 -> a1;
a1 -> out;
x3 -> xn [arrowhead="none", color="black:invis:black"];
}
我是 graphviz 的新手,所以我什至不确定我是否在这里正确使用了子图。我还尝试将子图中的节点添加到组中,但这似乎没有任何作用。
添加
{ rank = same; x1 x2 x3 xn }
x1 -> x2 -> x3[ style = invis ];
到你的第一个子图。这具有
的效果- 四个节点都是一层,即垂直排列
- 三个编号的节点在一起
这是我的版本:
digraph G
{
rankdir = LR
splines = line
subgraph cluster_0
{
color = white;
node[ style = solid, color = black, shape = circle];
{ rank = same; x1 x2 x3 xn }
x1 -> x2 -> x3[ style = invis ];
label = "Input Features";
}
subgraph cluster_1
{
color = white;
node[ style = solid, color = red2, shape = circle ];
a1;
label = "Activation";
}
subgraph cluster_2
{
color =white;
node[ style = solid, color = green, shape = circle ];
out;
label = "Output";
}
x1 -> a1;
x2 -> a1;
x3 -> a1;
a1 -> out;
x3 -> xn[ arrowhead = "none", color = "black:invis:black" ];
}
这给了你
E D I T 回答您评论中的问题;关键是在同一等级内颠倒了节点定义和边方向的顺序,这可能是由 rankdir = LR
布局引起的。毕竟,有一个简单的解决方案!
digraph G
{
rankdir = LR
splines = line
subgraph cluster_0
{
color = white;
label = "Input Features";
node[ style = solid, color = black, shape = circle ];
/* define and connect in reverse order */
{ rank = same; xn x3 x2 x1 }
x3 -> x2 -> x1[ style = invis ];
xn -> x3[ arrowhead = "none", color = "black:invis:black" ];
}
subgraph cluster_1
{
color = white;
node[ style = solid, color = red2, shape = circle ];
a1;
label = "Activation";
}
subgraph cluster_2
{
color =white;
node[ style = solid, color = green, shape = circle ];
out;
label = "Output";
}
{ x1 x2 x3 } -> a1;
a1 -> out;
}