Graphviz节点渲染

Graphviz节点渲染,graphviz,Graphviz,我有一个简单的graphviz图,如下图所示: digraph G { "Model" -> "Task"; "Task" -> "Worker 1" -> "Sink"; "Task" -> "Worker 2" -> "Sink"; "Task" -> "Worker 3" -> "Sink"; } "Sink" -> "Model"; 在接收器和任务节

我有一个简单的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";

如何添加此边并保持第一张图像中显示的原始对称节点布局?

(编辑以改进原始答案)

基于的答案,如果我们开始用
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,看起来很棒!