Graphviz节点渲染
我有一个简单的graphviz图,如下图所示:Graphviz节点渲染,graphviz,Graphviz,我有一个简单的graphviz图,如下图所示: digraph G { "Model" -> "Task"; "Task" -> "Worker 1" -> "Sink"; "Task" -> "Worker 2" -> "Sink"; "Task" -> "Worker 3" -> "Sink"; } "Sink" -> "Model"; 在接收器和任务节
digraph G {
"Model" -> "Task";
"Task" -> "Worker 1" -> "Sink";
"Task" -> "Worker 2" -> "Sink";
"Task" -> "Worker 3" -> "Sink";
}
"Sink" -> "Model";
在接收器和任务节点之间添加和边缘,图形输出如下图所示:
digraph G {
"Model" -> "Task";
"Task" -> "Worker 1" -> "Sink";
"Task" -> "Worker 2" -> "Sink";
"Task" -> "Worker 3" -> "Sink";
}
"Sink" -> "Model";
如何添加此边并保持第一张图像中显示的原始对称节点布局?(编辑以改进原始答案)
基于的答案,如果我们开始用dot
布局核心有向图,那么我们可以使用neato
添加附加边neato
允许使用-n
参数固定已定义位置的节点,以便执行类似操作(其中对称。dot
包含原始GraphViz有向图,并添加了graph[splines=true]
):
#/bin/bash
点-t点对称.dot>symmetric1.dot
neato-n2-Tpng symmetric1.dot-ossymmetric1.png
sed的/^}/“Sink”->“Model”;}/'对称性点
neato-n2-Tdot symmetric2.dot>symmetric3.dot
neato-n2-Tpng symmetric3.dot-ossymmetric3.png
此脚本:
dot
将原始有向图布局到新的.dot
文件中neato-n2
绘制原始有向图。-n2
选项可防止neato
移动已经有位置的节点李>
sed
插入“接收器”->“型号”
边缘neato-n2
布局新边(这是唯一一条未定义pos
的边,因此也是唯一一条未固定的边),并将其打印为.png
文件symmetric1.png
如下所示:
。。。和带有附加边的symmetric3.dot
如下所示:
谢谢你的回答,我希望有一个有向图结构,但这似乎不可能与
neato
@MigueldeVal-Borro一起使用。我已经更新了我的答案,首先使用dot
,并引用了另一个问题和答案,答案显示我们不必在第一步使用neato
。谢谢@Simon,看起来很棒!