首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止graphviz中的边相互重叠

如何防止graphviz中的边相互重叠
EN

Stack Overflow用户
提问于 2010-10-19 18:56:34
回答 3查看 52.6K关注 0票数 71

我有一个用graphviz创建的图,但问题是边相互重叠(我每行有5-7个节点),所以很难区分每个节点哪些是它连接的节点。

如何才能使边缘不相互重叠?让他们互相交叉是可以的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-13 00:53:04

我假设你有一个有向图,你可以用点来布局。

我不认为有一个神奇的开关来防止重叠的边缘。Graphviz试图做到开箱即用。

根据图表的不同,一些建议可能会有所帮助:

集中器集中器(

  • edge path.
  • ports ,concentrate=true):将具有公共端点的多个边合并为单条边,并让部分并行的边共享其集中器的部分内容:边的原点和端点可以位于特定端口(n,ne,e,se,s,sw,w,nw,w,c,_)。根据边缘端口的不同,边缘会改变其形式(spline).
  • invisible nodes:在某些情况下,引入不可见节点来路由边缘可能具有所需的效果。
票数 46
EN

Stack Overflow用户

发布于 2011-10-31 21:50:31

另一种方法是向图形添加重叠属性。允许的属性是scale (这将极大地增加输出的大小)或false (这不会增加太多的大小,但可能会导致边与节点重叠)。

代码语言:javascript
复制
overlap = scale;

如果使用的是overlap=false,则可以通过添加属性splines=true:来消除与结点的边重叠

代码语言:javascript
复制
overlap = false;
splines = true;

对于较大的图形,这将显著降低生成时间。

票数 23
EN

Stack Overflow用户

发布于 2015-01-07 02:30:51

即使对于非常普通的图,我也可以使用graphviz (neatofdp)来生成重叠。例如:

代码语言:javascript
复制
graph G {
0;
1;
2;
3;
0--1 ;
1--2 ;
2--3 ;
3--0 ;
}

在我的代码2.38.0版本中生成一个十字。

来自 的他们建议在这些情况下尝试使用不同的随机种子。最终,对于更复杂的图表,交叉将是不可避免的,我不确定引擎在避免交叉方面投入了多少精力。

例如,这对我很有效:

代码语言:javascript
复制
neato -Gstart=5 file.dot -Tps -o file.ps
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3967600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档