7

如何配置边和节点之间的距离(红色),即节点的外形(蓝色)?

边和节点之间的距离图

4

3 回答 3

4

这是您可以考虑的一种技术,它避免了创建自定义节点形状的需要。为了得到你想要的东西,你可能需要进一步解决一些品味问题。

这种技术的优点是,使用类似 HTML 的标签,改变矩形内部和外部的空间变得很简单,只需分别更改内部点数(此处为 4)和外部点数(此处为 16)。

digraph {

node [shape=none]

O [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="16" CELLPADDING="4">
<TR><TD WIDTH="70">\N</TD></TR>
</TABLE>
>]

{a,b,c,d} -> O

}

结果:

上面 graphviz 输入的 'dot' 渲染的 GIF

您可以更改 BORDER 和 CELLBORDER 参数以显示或隐藏矩形。您可以调整它们的厚度,尽管只能以 1 点的倍数进行调整。我使用了 WIDTH 参数来强制一个宽高比,这会导致所有箭头尖端的对齐。否则,一些尖端会与不可见的外部矩形的边相接。

于 2013-03-11T04:59:34.580 回答
2

这是不可能的AFAIK。

唯一可用的选项是使用headclip让边缘到达节点的中心或外部形状的边缘(如您在示例中所做的那样)。

您可以尝试通过将节点放在集群中来向节点添加一些填充,并将边缘剪辑在集群的(不可见)边界处:

digraph {
  compound=true;
  subgraph cluster1 {
        style=invis;
        2;
    }
    1 -> 2[lhead=cluster1];
}

Graphviz 图

希望有人知道对此有更好的技巧...

于 2011-05-25T13:19:04.247 回答
2

就像另一个答案所说,这并不是一件容易的事。使用 height、width、fixedsize、labelloc 和 margin 节点参数的组合,您可能可以获得任何您想要的效果。边距最好是您希望扩大该距离,但要将其最小化,您需要使用其他参数。例如,此图的箭头几乎接触到“O”节点的文本。

digraph {
  node [shape="none" width=.2 height=.2 fixedsize="true" labelloc="top"];

  a -> O;
  b -> O;
  c -> O;
  d -> O;
}

图形可视化图

或者,如果你真的想付出努力,你可以创建一个自定义节点形状,然后做任何你想做的事情。

于 2011-05-26T01:35:58.570 回答