7

我正在创建一个带有手动定位节点的图形,并在它们之间使用 splines="curved" 类型的边。

digraph graphname {
  splines="curved";
  node[shape = box, margin="0.03,0.03", fontsize=11, height=0.1, width=0.1,  fixedsize=false];

  "LeftFoot\nRightHand" [pos="-150,-150!"];
  "RightFoot\nRightHand" [pos="-90,-150!"];
  "LeftFoot\nRightFoot" [pos="0,-150!"];
  ...

  edge[style = solid,fontsize=11];
  "LeftFoot\nRightFoot":n -> "RightFoot\nRightHand":n [label = "3", penwidth = 1, color = "red"];
  "LeftFoot\nRightFoot":s -> "LeftFoot\nRightHand":s [label = "7", penwidth = 1, color = "red"];
  ...
}

问题是其中一条边弯曲到错误的一侧,所以它通过一个节点: 图表截图

有没有一种简单的方法可以解决这个问题,例如 TikZ 中的“向左弯曲”或“向右弯曲”?

我尝试使用边缘上的 pos 属性来设置样条控制点来改变弯曲,但这似乎根本没有改变边缘。

4

1 回答 1

0

在 Grapvhiz 中2.38,这似乎是固定的。我已经pos稍微缩放了,但剩下的代码只剩下了:

点源:

digraph graphname {
  splines="curved";
  node[shape = box, margin="0.03,0.03", fontsize=11, height=0.1, width=0.1,  fixedsize=false];

  "LeftFoot\nRightHand" [pos="-2,-2!"];
  "RightFoot\nRightHand" [pos="-1.2,-2!"];
  "LeftFoot\nRightFoot" [pos="0,-2!"];

  edge[style = solid,fontsize=11];
  "LeftFoot\nRightFoot":n -> "RightFoot\nRightHand":n [label = "3", penwidth = 1, color = "red"];
  "LeftFoot\nRightFoot":s -> "LeftFoot\nRightHand":s [label = "7", penwidth = 1, color = "red"];

}

命令:

dot -Kneato -Tpng input.gv > output.png

输出:
在此处输入图像描述

于 2020-06-19T10:51:32.807 回答