Graphviz,如何使两个节点之间的箭头居中(画一条直线)?
Graphviz, How to center the arrow (make a straight line) between two nodes?
目前,我有这个图,除了直接连接 X 和 Y 的箭头外,我觉得还不错。
这是我想在箭头大约在中心的位置绘制的图,我有一个解决方案是在中间创建一个不可见的节点,但我想知道是否有更好的方法,因为我觉得可以轻松搞定。
这是我的代码:
digraph{
graph [rankdir=LR]
node [shape = plaintext]
{rank=same; X1;X2;X3;X4;X5}
X -> X1 -> Y;
X -> X2 -> Y;
X -> X3 -> Y;
X -> Y;
X -> X4[dir=back];
X -> X5[dir=back];
X4 -> Y;
X5 -> Y;}
如果节点属于同一组,Graphviz 会尝试使节点在等级方向上保持在一条直线上。
digraph{
graph [rankdir=LR]
node [shape = plaintext]
X1;X2;X3
X[group=mid_straight];
Y[group=mid_straight];
X4;X5;
X -> X1 -> Y;
X -> X2 -> Y;
X -> X3 -> Y;
X -> Y;
X -> X4[dir=back];
X -> X5[dir=back];
X4 -> Y;
X5 -> Y;
}
如果你想要直线设置样条线可能就足够了
digraph{
graph [rankdir=LR splines=line]
node [shape = plaintext]
{rank=same; X1;X2;X3;X4;X5}
X -> X1 -> Y;
X -> X2 -> Y;
X -> X3 -> Y;
X -> Y;
X -> X4[dir=back];
X -> X5[dir=back];
X4 -> Y;
X5 -> Y;
}
目前,我有这个图,除了直接连接 X 和 Y 的箭头外,我觉得还不错。
这是我想在箭头大约在中心的位置绘制的图,我有一个解决方案是在中间创建一个不可见的节点,但我想知道是否有更好的方法,因为我觉得可以轻松搞定。
这是我的代码:
digraph{
graph [rankdir=LR]
node [shape = plaintext]
{rank=same; X1;X2;X3;X4;X5}
X -> X1 -> Y;
X -> X2 -> Y;
X -> X3 -> Y;
X -> Y;
X -> X4[dir=back];
X -> X5[dir=back];
X4 -> Y;
X5 -> Y;}
如果节点属于同一组,Graphviz 会尝试使节点在等级方向上保持在一条直线上。
digraph{
graph [rankdir=LR]
node [shape = plaintext]
X1;X2;X3
X[group=mid_straight];
Y[group=mid_straight];
X4;X5;
X -> X1 -> Y;
X -> X2 -> Y;
X -> X3 -> Y;
X -> Y;
X -> X4[dir=back];
X -> X5[dir=back];
X4 -> Y;
X5 -> Y;
}
如果你想要直线设置样条线可能就足够了
digraph{
graph [rankdir=LR splines=line]
node [shape = plaintext]
{rank=same; X1;X2;X3;X4;X5}
X -> X1 -> Y;
X -> X2 -> Y;
X -> X3 -> Y;
X -> Y;
X -> X4[dir=back];
X -> X5[dir=back];
X4 -> Y;
X5 -> Y;
}