如何允许边缘重叠节点?

时间:2019-04-02 04:41:50

标签: graphviz dot

我正在寻找一种在渲染点图期间禁用边缘布线的方法。 理想情况下,这将是每个边缘的选项,但是完全禁用路由也将有所帮助。

我正在生成的图形表示语法树,其中包括从使用标识符到其声明的其他边缘,如下所示。

Simple DAST

现在,这仍然是大多数可读性,但是在较大的图形中,蓝色点很快变得非常混乱,因为点似乎喜欢遍及整个地方。

Complex DAST

如果它们只是沿两个节点之间的直线(或弯曲)行进,而忽略与节点和其他边缘的所有重叠,我会更喜欢。 不幸的是,我一直无法找到实现这种效果的方法,老实说,我怀疑它是否有可能。

之前曾有人问过similar question,但由于以下原因,我还是决定打开一个新的

  • 我不要求节点保持在固定位置
  • 除了蓝色边缘,我的图始终是一棵树(无需担心边缘重叠)
  • 不幸的是,对我而言,在多个过程中运行圆点不是一种选择
  • 另一个问题已经超过6年了,所以也许从那时起就添加了功能

到目前为止我的尝试:

  • 在图形设置中添加了“ overlap = true”
  • 为各个边缘添加了“ overlap = true”

这些似乎都不起作用。

文件布局非常简单(摘录):

digraph {
  node [shape=Mrecord];
  graph [ordering=out, overlap=true, nodesep=0.3, ranksep=1];
  ...
  # ReferenceLiteral rec
  node0 -> node40 [style=dashed, color=blue, constraint=false]
  node0 [shape=box style=filled label="rec" fillcolor="#cccccc"]
  ...
  # PortNode Record
  node28:p0:s -> node40:n
  node28:p1_0:s -> node7:n
  node28 [label="{Record|{<p0>Name|{Elements|{<p1_0>1}}}}"]
  ...
  # DeclarationLiteral rec
  node40 [shape=box style=filled label="rec" fillcolor="#cccccc"]
  ...
}

0 个答案:

没有答案