如何使用 Graphviz 记录强制直线样条

问题描述 投票:0回答:1

有多个问题,例如这里这里这里。询问如何在 Graphviz 中强制连接器的直边(点)。

答案包括:

  • splines=line;
  • splines=false;
  • 用neato编译
  • 还有一个更长的示例,通过创建不可见节点来创建直线。

(如何)在此示例中,我可以强制将直接连接器从一条记录的顶部连接到另一条记录,而无需求助于不可见节点(如果可能)?

digraph select {
    splines=line;
    // splines=false;
    node [shape=record];
    rec1 [label="<f0> left|<f1> middle|<f2> right"];
    rec1:f0:n -> rec1:f2:n;
}

编辑:有人问了一个问题 - 如果是一条记录,那么记录怎么会有连接边,又怎么可能不是直的?

一条记录可以指向其自身的不同部分。问题是如何让它变直,即以 90 度角出去,然后以 90 度角转动,然后连接?

即不是弯曲的边缘: connector with curved edge

graphviz dot
1个回答
0
投票

这里是后处理器的链接,它将“修复”由 Graphviz 布局引擎创建的简单边缘。 它可以创建简单的弯曲边缘、正交边缘和/或直边缘。

用法是:

dot myfile.gv | gvpr -cf alterSimpleEdge.gvpr | neato -n2 -Tpng >myfile.png

输入和结果示例:

digraph {
 
  node [shape=record]
  R [label="<1>1|<2>2|<3>3|<4>4|<5>5|<6>6|<7>7|<8>8|<9>9|<10>10"]
  R:2:n  -> R:4:n   [edgeType=ortho3 edgeDirection=cw edgeOffset="18pt" ]
  R:5    -> R:8       [edgeType=ortho3 edgeDirection=cw edgeOffset="18pt" ]
  R:10:n -> R:3:n    [edgeType=ortho3 edgeDirection=ccw edgeOffset="26pt" ]

  node [shape=record];
  rec1 [label="<f0> left|<f1> middle|<f2> right"];
  rec1:f0:n -> rec1:f2:n   [edgeType=ortho3 edgeDirection=cw edgeOffset="18pt"]
}

给予:
enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.