首页 > 解决方案 > 如何在点图中为自环对称地显示箭头

问题描述

我正在使用我以点文件格式描述的 DFA。我的 DFA 中的一个节点有两个自环,我最初是用以下方式描述的

digraph {
  rankdir=LR;
  a -> a [color=blue]
  a -> a [color=green]
}

当我运行时会产生这个输出dot graph.gv -Tpng

同一侧的箭头

出于对称原因,我希望在节点的相对两侧有蓝色和绿色箭头。我可以修改绿色箭头的headportandtailport以强制它从节点底部开始,如下所示:

digraph {
  rankdir=LR;
  a -> a [color=blue]
  a:sw -> a:se [color=green]
}

不幸的是,这会产生绝对不稳定的输出:

两边都有箭头,但不稳定

让两个箭头在节点上对称相对的正确方法是什么?

标签: dot

解决方案


我怀疑您对边缘布局有很多控制权。但是您可以尝试使用headport属性值。这里有些例子。

示例 1

digraph {
  rankdir=LR;

  a:n -> a [color=blue]
  a:s -> a [color=green headport=center]
}

在编辑器中查看

点 1

示例 2

digraph {
  rankdir=LR;

  a:ne -> a [color=blue]
  a:sw -> a [color=green headport=center]
}

在编辑器中查看

点 2


其他布局

您还可以尝试不同的布局。以下是circo布局的一些选项。

示例 3

digraph {
  rankdir=LR;
  layout="circo"

  a:n -> a:_ [color=blue headport=n]
  a:s -> a:_ [color=green headport=s dir=back]
}

在编辑器中查看

circo-1

示例 4

digraph {
  rankdir=LR;
  layout="circo"

  a:nw -> a:w [color=blue headport=_]
  a:se -> a:e [color=green headport=_]
}

在编辑器中查看

circo-2


推荐阅读