如何使用neato处理密集连接的图形

12
我有以下dot/neato文件...
graph G
{

  node [color=Red]

  r01
  r02

  r03

  r04
  r05

  r06
  r07
  r08
  r09

  r10
  r11

  node [color=Blue]

  p01
  p02

  p03

  p04
  p05
  p06

  p07
  p08
  p09
  p10
  p11

  p12
  p13

  r01 -- r02
  r01 -- p01
  r01 -- p02
  r02 -- p01
  r02 -- p02
  p01 -- p02

  r03 -- p03

  r04 -- r05
  r04 -- p04
  r04 -- p05
  r04 -- p06
  r05 -- p04
  r05 -- p06
  p04 -- p05
  p04 -- p06

  r06 -- r07
  r06 -- r08
  r06 -- r09
  r06 -- p07
  r06 -- p08
  r06 -- p09
  r06 -- p10
  r06 -- p11
  r07 -- r08
  r07 -- r09
  r07 -- p07
  r07 -- p08
  r07 -- p09
  r07 -- p10
  r07 -- p11
  r08 -- r09
  r08 -- p07
  r08 -- p08
  r08 -- p09
  r08 -- p10
  r08 -- p11
  r09 -- p07
  r09 -- p08
  r09 -- p09
  r09 -- p10
  r09 -- p11
  p07 -- p08
  p07 -- p09
  p07 -- p10
  p07 -- p11
  p08 -- p09
  p08 -- p10
  p08 -- p11
  p09 -- p10
  p09 -- p11
  p10 -- p11

  r10 -- r11
  r10 -- p12
  r10 -- p13
  r11 -- p12
  r11 -- p13
  p12 -- p13
}

我使用neato创建了 这张图片

neato -Tpng -o graph-g.png graph-g.txt

总的来说,neato做得还不错,但图中最大的连通组件看起来相当荒谬。我应该怎么做才能让它看起来更好一些呢?我的标准是不允许节点重叠,并且连接的节点之间应该有足够的距离,这样你就可以看到它们之间的边缘。


刚刚发现了这个(https://dev59.com/JnNA5IYBdhLWcg3wPbSe),所以我的问题看起来像是重复的。然而,我更喜欢这个帖子中的答案! - Daniel Standage
2个回答

20
如果您将以下内容添加到您的图表顶部:
overlap=false;
splines=true;
结果如下所示:

结果是:

graphviz output no overlap with splines

现在不仅节点不再重叠,而且边缘也绕过了节点。


2

Graphviz有一个overlap属性(在这里查看),有时可以成功应用。

当我在你的第一个node属性上方插入overlap=false时,以下图像是结果。

使用overlap=false的图表

当我在同一位置插入overlap=scalexy时,我得到了以下结果。

使用overlap=scalexy的图表

不幸的是,你仍然有边通过节点p11。希望也能找到解决这个问题的方法。

你可以在这个页面底部看到一个overlap=false失败的例子。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接