在 Graphviz 中,是否可以从子记录的中心而不是边界开始绘制出边?
这张图(原始文章)看起来是这样,但是示例代码是错误的,我在 Graphviz 2.29 中测试了清单 1 中的代码(绘制了这个,但我twopi
改用了),结果不同(边缘从记录边界开始) .
有任何想法吗?
提前致谢。
链接的文章是从 2004 年开始的,从那时起对 graphviz 进行了一些更改。
以下是如何调整清单°1 显示源自记录形状单元中心的边缘:
在定义边缘之前添加以下行:
edge[headclip=false, tailclip=false];
这告诉 graphviz 将边缘绘制到末尾,而不是在边框的节点处剪裁它们。
但是在这种情况下这还不够,因为边缘已经使用了一个端口——我们可以添加一个罗盘点来指示放置边缘的结束/开始的位置。例如,为了让第一条边从 的中心J
到 的边界E
:
"node0":f1:c -> "node1":f1;
或者只是省略端口和罗盘点以使用节点的中心:
"node0" -> "node1":f1;
为了让所有边都起源和结束于记录节点的中心:
digraph G
{
node [shape = record];
edge[headclip=false, tailclip=false];
node0 [ label ="<f0> | <f1> J | <f2> "];
node1 [ label ="<f0> | <f1> E | <f2> "];
node4 [ label ="<f0> | <f1> C | <f2> "];
node6 [ label ="<f0> | <f1> I | <f2> "];
node2 [ label ="<f0> | <f1> U | <f2> "];
node5 [ label ="<f0> | <f1> N | <f2> "];
node9 [ label ="<f0> | <f1> Y | <f2> "];
node8 [ label ="<f0> | <f1> W | <f2> "];
node10 [ label ="<f0> | <f1> Z | <f2> "];
node7 [ label ="<f0> | <f1> A | <f2> "];
node3 [ label ="<f0> | <f1> G | <f2> "];
// identical result: "node0" -> "node1";
"node0":f1:c -> "node1":f1:c;
"node0":f1:c -> "node2":f1:c;
"node1":f1:c -> "node4":f1:c;
"node1":f1:c -> "node6":f1:c;
"node4":f1:c -> "node7":f1:c;
"node4":f1:c -> "node3":f1:c;
"node2":f1:c -> "node5":f1:c;
"node2":f1:c -> "node9":f1:c;
"node9":f1:c -> "node8":f1:c;
"node9":f1:c -> "node10":f1:c;
}