dot - 如何在点图中为自环对称地显示箭头
问题描述
我正在使用我以点文件格式描述的 DFA。我的 DFA 中的一个节点有两个自环,我最初是用以下方式描述的
digraph {
rankdir=LR;
a -> a [color=blue]
a -> a [color=green]
}
当我运行时会产生这个输出dot graph.gv -Tpng
出于对称原因,我希望在节点的相对两侧有蓝色和绿色箭头。我可以修改绿色箭头的headport
andtailport
以强制它从节点底部开始,如下所示:
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=_]
}
推荐阅读
- python - Python,无法从url下载文件,为每个文件获取一种主页
- angular - 如何在 Angular 中自动播放 youtube 组件?
- python - 我的票务系统中的 Discord.py 表情符号反应不起作用?
- typescript - TypeScript Compiler API:如何在没有绝对路径的情况下获取类型的完全限定名称?
- api - 有没有更好的方法在 Flutter 中的服务器上上传多个大文件
- verilog - 如何使用组合逻辑中的内存合成verilog代码。?
- jobs - 在 DataBricks 中一次提交多个作业
- node.js - 调整来自 API 的图像大小
- python - 在Python中循环列表时如何确定追加的数量?
- elasticsearch - Elasticsearch 错误:验证失败:1:moving_avg 聚合的父直方图 [3] 的 min_doc_count 必须为 0;