如何在点图中为自循环对称显示箭头
How to show arrows symmetrically for self-loops in a dot graph
我正在使用我在点文件格式中描述的 DFA。我的DFA中的一个节点有两个自循环,我最初是用下面的方式描述的
digraph {
rankdir=LR;
a -> a [color=blue]
a -> a [color=green]
}
当我 运行 dot graph.gv -Tpng
时产生这个输出
出于对称原因,我希望在节点的相对两侧有蓝色和绿色箭头。我可以修改绿色箭头的headport
和tailport
强制它从节点底部开始,如下所示:
digraph {
rankdir=LR;
a -> a [color=blue]
a:sw -> a:se [color=green]
}
不幸的是,这会产生一个绝对不稳定的输出:
使两个箭头在节点上对称相对的正确方法是什么?
我怀疑你对边缘布局有很多控制。但是您可以试验 headport 属性值。这里有一些例子。
示例 1
digraph {
rankdir=LR;
a:n -> a [color=blue]
a:s -> a [color=green headport=center]
}
示例 2
digraph {
rankdir=LR;
a:ne -> a [color=blue]
a:sw -> a [color=green headport=center]
}
其他布局
您还可以尝试不同的布局。以下是 circo
布局的一些选项。
示例 3
digraph {
rankdir=LR;
layout="circo"
a:n -> a:_ [color=blue headport=n]
a:s -> a:_ [color=green headport=s dir=back]
}
示例 4
digraph {
rankdir=LR;
layout="circo"
a:nw -> a:w [color=blue headport=_]
a:se -> a:e [color=green headport=_]
}
我正在使用我在点文件格式中描述的 DFA。我的DFA中的一个节点有两个自循环,我最初是用下面的方式描述的
digraph {
rankdir=LR;
a -> a [color=blue]
a -> a [color=green]
}
当我 运行 dot graph.gv -Tpng
出于对称原因,我希望在节点的相对两侧有蓝色和绿色箭头。我可以修改绿色箭头的headport
和tailport
强制它从节点底部开始,如下所示:
digraph {
rankdir=LR;
a -> a [color=blue]
a:sw -> a:se [color=green]
}
不幸的是,这会产生一个绝对不稳定的输出:
使两个箭头在节点上对称相对的正确方法是什么?
我怀疑你对边缘布局有很多控制。但是您可以试验 headport 属性值。这里有一些例子。
示例 1
digraph {
rankdir=LR;
a:n -> a [color=blue]
a:s -> a [color=green headport=center]
}
示例 2
digraph {
rankdir=LR;
a:ne -> a [color=blue]
a:sw -> a [color=green headport=center]
}
其他布局
您还可以尝试不同的布局。以下是 circo
布局的一些选项。
示例 3
digraph {
rankdir=LR;
layout="circo"
a:n -> a:_ [color=blue headport=n]
a:s -> a:_ [color=green headport=s dir=back]
}
示例 4
digraph {
rankdir=LR;
layout="circo"
a:nw -> a:w [color=blue headport=_]
a:se -> a:e [color=green headport=_]
}